私はアプリケーションのミドルウェアとしてExpress.jsを使用しています。私のフロントエンドアプリケーションは、数秒ごとに異なるパラメータで高速ルートを呼び出します。ルートは、各パラメータの呼び出しをサードパーティのAPIに呼び出します。これらの呼び出しのそれぞれの内部で、データが配列に追加されます。 forループの後、配列をフロントエンドに送ります。Express JS送信配列は常に空です
ルート内に配列を宣言しますが、返される結果は空です。配列外の配列を宣言するときは動作していますが、複数の要求が同時に行われた場合は最適ではありません。
server.js
app.get('/prices', function(req, res){
//array for holding all feeds
var feedData = [];
//Url params
var target = req.param('target');
//Convert the params to an array
var targetArray = target.split(',');
//Loop through targets and do request
for (var i = 0; i < targetArray.length; i++) {
//API endpoint
var url = xxx;
request(url, function (error, response, body) {
//Parse the XML body to javascript objects or json
parseString(body, function (err, result) {
//Store result in js object
var resultObject = result;
var arrayObject = resultObject.quotes.quote;
feedData.push(arrayObject[0])
});
});
}
console.log(feedData);
res.send(feedData);
//Clear feedData
feedData = [];
});
だから一番下の行は、配列が空であることです。助言がありますか?
「async」リクエスト – Weedoze