Promise 链中的 for 循环中的 Promise
Posted
技术标签:
【中文标题】Promise 链中的 for 循环中的 Promise【英文标题】:Promise in for loop in promise chain 【发布时间】:2018-12-19 09:54:01 【问题描述】:我有一个无法找到正确答案的混乱问题。它在不支持等待和异步的 firebase 中。
目前,它可以工作,但只运行一次,不会循环。
return foo.bar(query);)
.then((result) =>
if (result == '0')
//do stuff
else
var i;
for(i = 0; i <= result; i++)
return foo.bar(secondQuery);)
.then((secondResult) =>
//do other stuff
)
)
【问题讨论】:
return
将在第一次迭代后终止函数。你想在那里实现什么目标?
【参考方案1】:
您可以使用Promise.all
Promise.all(iterable) 方法返回一个 Promise 当可迭代参数中的所有承诺都具有时解决 已解决或当可迭代参数不包含任何承诺时。它 以第一个拒绝的承诺的原因拒绝。
return foo.bar(query).then(result =>
if (result == '0')
//do stuff
else
var i;
var all = [];
for (i = 0; i <= result; i++)
var p = foo.bar(secondQuery).then((secondResult) =>
//do other stuff
);
all.push(p)
return Promise.all(all);
);
【讨论】:
所以我的实现有点复杂。我在我的应用程序上下文中做了你所说的,并粘贴了下面的完整代码,因为它似乎仍然只运行一次。它不循环。 pastebin.com/ReXD1G0e以上是关于Promise 链中的 for 循环中的 Promise的主要内容,如果未能解决你的问题,请参考以下文章