나는 forEach 루프를 NodeJS에 가지고 있으며 일련의 키를 반복한다. 그 값은 Redis에서 비동기 적으로 검색된다. 루프 및 검색이 완료되면 해당 데이터 세트를 응답으로 반환하려고합니다.루프 내부에서 비동기 함수 완료 후 함수를 호출하는 방법은 무엇입니까?
데이터 검색이 비동기식이기 때문에 현재 내 문제는 응답을 보낼 때 배열이 채워지지 않습니다.
ForEach 루프와 함께 약속이나 콜백을 사용하여 응답이 데이터와 함께 전송되도록하려면 어떻게해야합니까?
exports.awesomeThings = function(req, res) {
var things = [];
client.lrange("awesomeThings", 0, -1, function(err, awesomeThings) {
awesomeThings.forEach(function(awesomeThing) {
client.hgetall("awesomething:"+awesomeThing, function(err, thing) {
things.push(thing);
})
})
console.log(things);
return res.send(JSON.stringify(things));
})
이 문제에는 많은 품질 보증이 있습니다. 일부는이 페이지의 오른쪽에 나열되어 있습니다. –
지금 당장 약속 라이브러리를 사용하는 것이 좋습니다. [소개가 있습니다] (http://margaine.com/bluebird/) –
@dystroy 그 질문에 대한 유망한 답변을 추가하는 것을 고려해야합니다. 현재는 다소 추한 것입니다. 또한, 무언가 뭔가 비동기 세마포어. –