周りにはたくさんの制御フローライブラリがあります。以前のプロジェクトでQを使用しましたが、不満はありませんが、次のプロジェクトではcaolanの非同期ライブラリを使用することを検討します。
https://github.com/caolan/async
上で説明したことから、並列関数の使用を検討することをお勧めします。
https://github.com/caolan/async#parallel
あなたが説明する問題は、ドキュメントの並列の例に非常に簡単に転送できます
編集:API呼び出しが依存していることについて少し見逃しました。チェーンに沿って値を渡し、順序を制御する必要がある場合は常に、ウォーターフォール方式を使用する必要があります(qiaoの回答を参照)。呼び出しが独立している場合は、並列メソッドを使用します。並列方式の例を以下に示します。
async.parallel({
google: function(callback){
http.get("http://www.google.com", function(res){
console.log("google done");
callback(null, res.statusCode);
})
},
yahoo: function(callback){
http.get("http://www.yahoo.com", function(res){
console.log("yahoo done");
callback(null, res.statusCode);
})
}
},
function(err, results) {
if(!err){
console.log("all done");
console.log(results.google);
console.log(results.yahoo);
}else{
console.log(err);
}
}
);
これにより、すべてのリクエストが並行して行われ、すべてのリクエストが完了したときにコールバックが提供されます。これは、データをマッサージする場所です。
制御フローライブラリのリスト:
https://github.com/joyent/node/wiki/Modules#wiki-async-flow