一般的な方法は、asyncモジュールを使用することです。
npm install async
async
モジュールには、さまざまな形式の非同期イベントを処理するためのプリミティブがあります。
あなたの場合、async#parallel
呼び出しにより、すべての外部 API に同時にリクエストを作成し、結果を組み合わせてリクエスターに返すことができます。
外部の http リクエストを作成しているので、おそらくrequestモジュールも役立つでしょう。
npm install request
request
とルートハンドラを使用するとasync#parallel
、次のようになります...
var request = require('request');
var async = require('async');
exports.handler = function(req, res) {
async.parallel([
/*
* First external endpoint
*/
function(callback) {
var url = "http://external1.com/api/some_endpoint";
request(url, function(err, response, body) {
// JSON body
if(err) { console.log(err); callback(true); return; }
obj = JSON.parse(body);
callback(false, obj);
});
},
/*
* Second external endpoint
*/
function(callback) {
var url = "http://external2.com/api/some_endpoint";
request(url, function(err, response, body) {
// JSON body
if(err) { console.log(err); callback(true); return; }
obj = JSON.parse(body);
callback(false, obj);
});
},
],
/*
* Collate results
*/
function(err, results) {
if(err) { console.log(err); res.send(500,"Server Error"); return; }
res.send({api1:results[0], api2:results[1]});
}
);
};
他のコールバック シーケンス メソッドについては、こちらを参照してください。