我正在尝试使用节点redis模块读取redis中的密钥内容。 它可以工作,但需要运行两次以获得redis更新,请检查下面的代码
client.lrange('resque:queue:default',0, -1, function(error, replies){
replies.forEach(function(item){
var parsed = JSON.parse(item);
result.push({
'name' : parsed.args[0].name ,
'mobno' : parsed.args[0].mobno,
'email' : parsed.args[0].email
})
})
});
res.json(result);
首次运行:返回空数组[] 第二次运行:获取更新的正确数据 我需要刷新应用程序以获取最新更新。
有什么想法吗?
答案 0 :(得分:0)
将res.json(result);
移至lrange()
回调的末尾:
client.lrange('resque:queue:default',0, -1, function(error, replies){
replies.forEach(function(item){
var parsed = JSON.parse(item);
result.push({
'name' : parsed.args[0].name ,
'mobno' : parsed.args[0].mobno,
'email' : parsed.args[0].email
})
})
res.json(result);
});
通常,每当您看到需要回调的内容时,它都是异步的,这意味着函数调用将在完成任何操作之前立即返回。这就是result
第一次为空的原因,lrange()
回调尚未在该点执行。