我使用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