getStories は非同期であるため、現在のアプローチは機能しません ( のメソッド シグネチャに基づく仮定getStories
)。可能であれば、複数のプロジェクト ID のストーリーを取得できるメソッドを作成することをお勧めしますpivotal
。コードは次のようになります。
app.get('/stories', function(req, res) {
var project_ids = [1, 2];
pivotal.getStories(project_ids, function(err, project_stories) {
res.send(project_stories);
}
});
それができない場合は、 node-seqなどのフロー ライブラリを調べることをお勧めします。次に、コードを次のように読み取ることができます。
app.get('/stories', function(req, res) {
var project_ids = [1, 2];
Seq(project_ids)
.parEach(function(project_id) {
pivotal.getStories(project_id, this);
})
.seq(function() {
var aggregatedStories = [];
Hash.map(this.args, (function(arg) {
// Each parSeq aparently results in an array of objects
aggregatedStories.push(arg[0]);
}));
res.send(aggregatedStories);
});
});
Hash.map
関数は、と呼ばれるノードモジュールからのものですhashish
編集: もう少し詳しく説明parEach
すると、関数が並列にseq
実行され、並列実行からのすべてのコールバックが終了した後に以下が実行されます。node-seq
各並列実行の結果を次のパラメーター配列に入れますseq
。Hash.map(this.args)