我使用Redis的NPM库Node.js的 - 我可以监听连接“准备”的事件,像这样Redis的客户端 - 在(“准备好”)事件
var client = require('redis).createClient();
client.on('ready', function() {
client.keys('*', function (err, keys) {
if (err) {
log.error(err);
} else {
for (var i = 0; i < keys.length; i++) {
createLocalDataMap(keys[i]);
}
}
});
});
然而
,我该怎么查询Redis看看它是否准备好,而不是在我准备好处理它之前听一个可能会发生的事件?
我想我可以放弃就绪事件,只是做一个查询,然后等待回应,但有没有更好,更安全和更复杂的方式?
换句话说,十有八九我会写这样的功能:
var isReady = false;
client.on('ready', function(){
isReady = true;
});
function doSomethingMuchLater(){
if(isReady){
//query redis as normal
}
else {
client.on('ready', function(){
isReady = true;
//now I do what I wanted to do
});
}
}
这似乎并不权可言,必须有一个更好的办法
如果它真的是doSomethingMuchLater,你不必担心就绪。它将被连接。 – bluesman
是的,但(a)我讨厌激情的竞争条件(b)如果连接失败---->因此我应该检查状态 –
如果失败,请执行一些操作('错误')。节拍检查准备好每一个连接 – bluesman