alb*_*ini 8 javascript node.js promise
我必须为数组中的每个项目调用一些异步任务的承诺,但我想连续执行这些.
Promise.all仅用于具有合并promise列表的新promise,但它不会按顺序调用它们.
如何使用标准的promise api来实现这一点,而没有第三方库,如Q,bluebird ....
jfr*_*d00 20
使用.then()返回另一个promise的回调链接promises .所以,假设你有三个函数a,b和c都返回一个promise.您可以链接它们(按顺序执行),如下所示:
a().then(b).then(c).then(function(result) {
// all are done here
});
Run Code Online (Sandbox Code Playgroud)
如果你正在处理一个数组并且你myFunc想要为数组中的每个项调用一个promise-returns函数,你可以使用一个标准的数组设计模式和promises .reduce()来一次遍历数组一个项目,就像这样:
var items = [...];
items.reduce(function(p, item) {
return p.then(function() {
return myFunc(item);
});
}, Promise.resolve());
Run Code Online (Sandbox Code Playgroud)
事实证明,这实际上只是.then()像第一个例子那样链接一堆处理程序,但是使用结构.reduce()来为你走数组.
| 归档时间: |
|
| 查看次数: |
1249 次 |
| 最近记录: |