我正在使用Redis爲我的內存存儲模型生成ID。 Redis的客戶端需要一個回調到INCR
命令,這意味着代碼看起來像如何在Node.js中同步處理回調?
client.incr('foo', function(err, id) {
... continue on here
});
的問題是,我已經寫的應用程序的其他部分,即預計incr
調用是同步的,只是返回的ID,這樣我可以使用它像
var id = client.incr('foo');
爲什麼我對這個問題的原因是,到現在爲止,我正在生成的ID只是一個簡單的封閉計數器功能的記憶,就像
var counter = (function() {
var count = 0;
return function() {
return ++count;
}
})();
簡化測試,只是一般的設置。
這是否意味着我的應用程序設計有瑕疵,我需要重寫它期望在生成ID的回調?還是有什麼簡單的方法來同步呼叫?
我不認爲這會對你有所幫助,但我已經看到了,並且不需要回調。 https://github.com/mranney/node_redis搜索'「client.set(」foo'和'client.incr(「做了一件事)」;' –
@MiaDiLorenzo只有當你想忽略返回值時,你可以很容易地爲'set'做,但不是'incr',你實際上唯一需要的是遞增的值:) –
噢,我現在明白了。否則,你將不得不分別寫一個需要回調的get。 –