当我在下面调用函数并在我的ejs上显示数据时。服务器启动后第一次加载时没有数据。但是可以从第二次加载获得数据。这只是在服务器启动后第一次加载时的空列表。这是怎么回事?我使用redis作为数据库。我在使用postgreSQL时遇到了同样的错误并且使用了
client.on('end', function(){
fn(_datas);
}.
但现在无法使用该代码。
getAllDatas = function(fn){
client.smembers('db:contact:all', function(err, _uid){
if(err)
throw err;
else{
for(var i = 0; i < _uid.length; i++){
client.hgetall('db:contact:' + _uid[i], function(err, reply){
if(err)
throw err;
else{
_datas.push(reply);
}
});
}
}
});
fn(_datas);
_datas = [];
};
答案 0 :(得分:0)
我使用 setTimeout 函数解决了以下代码。我知道这不是很好的答案,但现在确实可以解决我的错误。
getAllDatas = function(fn){
var _datas = [];
client.smembers('db:contact:all', function(err, _uid){
if(err)
throw err;
else{
for(var i = 0; i < _uid.length; i++){
client.hgetall('db:contact:' + _uid[i], function(err, reply){
if(err)
throw err;
else{
_datas.push(reply);
}
});
}
}
});
setTimeout(function(){
fn(_datas);
}, 100);
};