我很确定我错过了一些次要的东西。我在对象数组上应用了一个javascript Foreach循环。在循环中,我正在对api进行异步调用以更新数据。我想要的是Foreach循环,在进入下一个迭代之前等待promise实现。
这是代码示例
entriesToUpdate.forEach(function (item) {
SomeService.updateEntry(item).then(function (res) {
//Do some stuff here.
});
//Wait for the above promise to be fulfilled before going to next iteration
});
您可以定义一个递归处理条目的函数,如下所示:
function updateEntries(entries, i) {
if(i < entries.length) {
return SomeService.updateEntry(entries[i]).then(function() {
return updateEntries(entries, i+1);
});
}
}
updateEntries(entriesToUpdate, 0);
或者你可以把你的promise连锁反应。
var promise = SomeService.updateEntry(entriesToUpdate[0]);
for(var i = 1; i < entriesToUpdate.length; i++) {
promise = promise.then(function() {
return SomeService.updateEntry(entriesToUpdate[i]);
});
}
(这些示例可能不起作用;我不熟悉AngularJSpromise。仅ES6promise)
问题内容: 我在node.js中有以下循环 UpdateDetail函数返回一个Promise。在继续循环的下一个迭代之前,我如何等待承诺解决/拒绝。 问题答案: 您可以为此使用异步库。然后转到async.eachSeries。 您需要先执行npm install async 这是示例:
如何进入JavaScript循环的下一次迭代? 例如: MDN文档只提到完全脱离循环,而不是转移到下一个迭代。
问题内容: 在循环中使用/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。 这段代码确实有效,但是这可能会出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用/ ,所以我只是想问一下这是否有问题。 问题答案: 确保代码确实有效,但是我很确定它不会实现您期望的功能。它只会触发多个异步调用,但此后函数会立即返回。 顺序阅读 如果要顺序读取文件, 则不能使用。只需使用现代循环即可,该循环将按预
我试图在PHP中的foreach循环的每次迭代之后进行回显。回声在全部完成之前不会呈现。我试过各种帖子的建议,但没有一个奏效。我的一些代码是: 有什么建议吗?谢了。
问题内容: 我正在使用bluebird,方法 getAll 和 update return promises。我如何说“等到两个承诺返回,然后更新currentProduct值”?我对JS很陌生… 问题答案: 如果可以使用/,这将很简单。 或者,如果您只能使用简单的承诺,则可以遍历所有产品,并将每个承诺置于最后一个循环中。这样,仅当前一个问题解决时,它才会前进到下一个问题(即使它将首先迭代整个循环
问题内容: 我正在制作一个经常刷新数据的函数,而我的请求链存在问题。问题是我有一个运行异步请求的for循环,并且for循环将在请求完成之前完成。 如果我要运行此代码,它将显示: 我知道是什么问题。事实上,for循环不会等待请求完成。我不知道这是一种解决方法。有人有什么想法吗? 问题答案: 您需要异步库。 例如, 可以这样写: 异步中有很多方便的实用程序函数,这些函数使回调的使用变得更加容易。