[英]How can I traverse an promise object reference chain synchronously in a loop
我有一个方法可以异步地从数据库返回对象的承诺(按ID)。
函数getObj(id){} ....返回对象的承诺
通过存储其ID,它可能引用或可能不引用另一个对象。
object.nextObjId
我需要遍历引用链,直到使用此方法找到终端对象为止。 显然,在检查下一个参考之前,我必须等待诺言解决。
在同步代码中,它看起来像这样:
function getTerminalObj(id)
{
var obj = getObj(id);
while(obj.nextRef)
{
obj = getObj(obj.nextObjId);
}
return obj;
}
当getObj(id)代替返回对象的承诺时,我该怎么做?
如果我错了,请纠正我。 我认为您是在问“如何以同步方式解决承诺”。 在JS / NodeJS的上下文中,有一些选择:
await/async
异步功能 两种方法都需要您执行以下任一操作:
但是,我会说您不必以同步方式执行此操作。 以下代码可能会有所帮助:
function chain(obj) {
if (obj.nextRef) {
return getObj(obj.nextObjId).then(chain);
}
return Promise.resolve(obj);
}
getObj(id).then(chain).then(function(terminalObj) {
// There is the terminal object.
console.log(terminalObj);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.