【发布时间】:2019-01-11 03:46:55
【问题描述】:
我愿意
- 创建一系列承诺(通过 jQuery get/post 调用 API)
- 每个完成后运行代码(例如进度指示器)
- 在它们全部完成后运行(不同的)代码
这是怎么做到的?
类似的东西 - 但请参阅第 5 行评论中的问题
var urls = []; // a bunch of URLs
Promise.all(
urls.map(e => {
return $.post(e);
// do something here after post has succeded
/// but still return a promise
})
).then(d => {
// do something when all succeed
}).catch(e => {
console.log(e)
})
我可以使用 Bluebird
【问题讨论】:
-
作为拥有 1k+ 代表的人,您应该知道“如何创建最小、完整和可验证的示例。”。花点时间,提供一个你想要完成的例子。
-
只需将 .then 添加到循环中的 Promise 中,收集一系列 Promise。然后将该数组提供给 Promise.all() 和一个 .then 就可以了。
-
@kemikofa 有时(正如马克所提到的)代码实际上会使问题变得更难,更不容易理解,并且不太适用。恕我直言,至少。因此避免了我现在添加的代码 FWIW。
-
@mark-meyer - 谢谢。 .then() 返回一个承诺是我错过的一点
标签: javascript promise bluebird