nodejs中jQuery.when()的等价物是啥?

Posted

技术标签:

【中文标题】nodejs中jQuery.when()的等价物是啥?【英文标题】:What's the equivalent of jQuery.when() in nodejs?nodejs中jQuery.when()的等价物是什么? 【发布时间】:2014-10-10 13:03:51 【问题描述】:

我问过whats the equivalent of jquery when in angular,现在我想在节点中做类似的事情。我需要这样的东西:

when(fs.readFile('file1'), fs.readFile('file2')) .done(function( a1, a2 ) ... // do stuff );

我怎样才能做到这一点?谢谢。

【问题讨论】:

【参考方案1】:

您需要节点 0.11.13 或更高版本才能工作或使用库,但那将是 Promise.all:

var Promise = require("bluebird"); // Imports the Bluebird promise library in 
                                   // new versions of node this is optional

Promise.promisifyAll(fs); // this is required if using Bluebird, you'll have to 
                          // do this manually with native promises.
Promise.all([fs.readFileAsync('file1'), fs.readFileAsync('file2')])
.spread(function( a1, a2 ) 
   ... // do stuff
);

关于如何将回调 API 转换为 Promise - 请参阅 this question and answer。

【讨论】:

@LeonidBeschastny 没错,但在新版本的节点承诺中,作为 Node 的一部分发布,因为它们已被新的 javascript 标准所接受。在节点 0.12 中,promise 将开箱即用。 Bluebird 尤其适用于 Netscape 7,因此 Node 0.8 并不是一个真正的挑战 :) Promise 适用于任何 node.js 版本,或者至少从 0.8.x 开始。 我们的 cmets 是如何倒转的:S? 我不小心删除了我的评论。 感谢@BenjaminGruenbaum,非常详细!

以上是关于nodejs中jQuery.when()的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery源代码学习之五——jQuery.when

带有ajax数组的JQuery $.when [重复]

jquery $.when() .then() 和 .done() 之间的区别

等待 jQuery.when ajax 请求

jQuery.when 理解

jQuery异步框架探究3:jQuery.when方法