ノードを非同期的な知識なしに開始し、データをコールバックの一部として配列にプッシュする方法が不思議です。出力配列は宣言されていますが、要求コールバック内で参照されているときは未定義です。その変数をコールバック関数のスコープに渡すだけの簡単な方法はありますか?nodejsが要求のあるforループ内に配列をプッシュ
理想的には、呼び出し元に返された各リクエストの結果の配列を返信したいと考えています。
const request = require('request');
module.exports = {
apiRatingCall: function (input, callback) {
var output = []
for (var i = 0; i < input.length; i++) {
var options = {
url: 'someAPIURL' + '?longitude=' + input[i].longitude + '&latitude=' + input[i].latitude + '&name=' + input[i].name,
headers: {
'x-api-version': 2
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body)
output.push(info) // this is not working as ouput is undefined at this point
}
})
}
callback(output)
}
}
おかげ
ネットワーク接続が十分に速くなく、すべての応答が500ミル戻ってこない場合は、どうしますか? –