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);
凡是你的图书馆的all
function,需要一系列的承诺,如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图书馆都有自己的文档,网上有很多教程。 “官方”只是规范,我认为这些规范对于用户来说是短暂的,可以理解的。