在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; }