【发布时间】:2014-05-12 10:11:51
【问题描述】:
我在 NodeJS 中有一个 forEach 循环,遍历一系列键,然后从 Redis 异步检索这些键的值。循环和检索完成后,我想将该数据集作为响应返回。
我目前的问题是因为数据检索是异步的,发送响应时我的数组没有填充。
如何在我的 forEach 循环中使用 Promise 或回调来确保响应与数据一起发送?
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));
})
【问题讨论】:
-
这个问题有很多QA。有些列在此页面的右侧。
-
现在,我建议使用 Promise 库。 Here's an introduction
-
@dystroy 您应该考虑为该问题添加一个承诺答案。现在的比较丑。此外,还有一些异步信号量。
标签: javascript node.js callback redis promise