在node.js应用程序中完成并行http获取请求

我想要并行执行一些HTTP请求,映射到结果上,然后在所有结果都准备好的情况下重新同步(join),以便呈现结果页面。

伪代码:

var value_needed_to_render_page = async.parallel([array of values to iterate over], function to call in parralel on array).join() return page_render(value_needed_to_render_page); 

我一直在寻找asynchronous和FutureJS,但没有find一个好方法。

一个解决scheme是使用承诺。 Q.all将期望列表中的每个函数都返回一个promise,并等待所有的promise都解决。 以下示例使用q.js, https : //github.com/kriskowal/q :

 Q.all([ functionToFireRequest1, functionToFireRequest2, // (...) functionToFireRequestN ]).then( function() { doStuff(); }); 

Q.all接收函数列表,所以你也可以通过编程方式生成列表。

作为一个例子,“functionToFireRequest”看起来像这样:

 function functionToFireRequest1() { var deferer = Q.defer(); doMyRequestABCFoo( function() { deferer.resolve() } ); // callback should be called inside your request after it finishes return deferer.promise; }