내 애플리케이션 용 미들웨어로 Express.js를 사용하고 있습니다. 내 프론트 엔드 애플리케이션은 몇 초마다 서로 다른 매개 변수를 사용하여 신속한 경로를 호출합니다. 그런 다음 경로는 제 3 자 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