JS:async.each的等价承诺是什么?

似乎今天宣布,承诺将在ES6。

我从来没有成为一个承诺的家伙,.then()的史诗链似乎比async.waterfall()中的一个简单的函数列表更复杂,但是看起来像我将不得不去学习它们。

那么,其他非常stream行的工作streamasync.each()是什么呢?

async.each(items, processItem, function(err){ doSomething(err) }); 

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

  • 我如何在承诺中做到这一点?
  • 是否有一个官方的承诺用户文档的地方(不是诺言规范 ,实际示例工作stream程,以及如何做承诺)像asynchronous呢?

是否有一个官方的承诺用户文档的地方(不是诺言规范,实际示例工作stream程,以及如何做承诺)像asynchronous呢?

我们已经在Q wiki上整理了一个承诺资源页面 。 在工作stream程和组成方面,我相信“如何用Q来编写Node.js的承诺”将是最有帮助的; 尽pipe标题不是Node.js特有的,

我如何在承诺中做到这一点?

假设processItem现在不接受callback,但返回一个你会写的承诺

 all(items.map(processItem)).then(doSomething); 

凡是你的图书馆的allfunction,需要一系列的承诺,如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([])); } 

是否有一个官方的承诺用户文档的地方(不是承诺的规格,工作stream程,以及如何做承诺)像asynchronous?

不。 每个Promise图书馆都有自己的文档,网上有很多教程。 “官方”只是规范,我认为这些规范对于用户来说是短暂的,可以理解的。