JS:与async.each相当的承诺是什么?

mik*_*ana 4 javascript asynchronous node.js promise async.js

似乎今天宣布承诺将在ES6中.

我从来都不是一个承诺的人 - .then()的史诗链似乎比async.waterfall()中的一个简单的函数列表更复杂,但看起来我还是要学习它们.

那么,与其他非常流行的工作流程async.each()相同的是什么?

async.each(items, processItem, function(err){
    doSomething(err)
});
Run Code Online (Sandbox Code Playgroud)

例如,对每个项目运行一个processItem函数,一旦完成,继续使用doSomething(如果任何processItem()被搞砸,则执行不同的操作).

  • 我怎么能在承诺中做到这一点?
  • 对于promises用户文档(不是promises规范,实际的示例工作流以及如何在promises中执行它们),是否存在异步的官方位置?

Ber*_*rgi 5

我怎么能在承诺中做到这一点?

假设processItem现在不接受回调但返回你要写的承诺

all(items.map(processItem)).then(doSomething);
Run Code Online (Sandbox Code Playgroud)

all你的图书馆的all功能在哪里采取了一系列的承诺,比如Q.all.如果你没有,这个简单的实现将:

function all(promises) {
    return promises.reduce(function(m, p) {
        return m.then(function(res) {
            return r.then(function(r) { return res.concat([r]); });
        });
    }, fulfill([]));
}
Run Code Online (Sandbox Code Playgroud)

promises用户文档是否有正式的地方(不是承诺规范,工作流程以及如何在promises中执行它们),就像有异步一样?

不.每个Promise库都有自己的文档,网上有很多教程."官方"只是规格,我认为这些规格简短易懂,足以供用户阅读.