1
我很難得到節點,redis和async來做我想做的事情。我正在嘗試非常基本的東西來掌握重定向控制流的模式。在這裏,如果key0 > key1
的比較結果爲真,則我保留一個計數變量「成功」,該變量增加1。它們現在是靜態的,所以它總是如此。我唯一希望改變的是增加success
。我刷新瀏覽器重新運行比較並再次增加success
。Incr似乎運行兩次 - 爲什麼?
我的問題是:頁面被刷新時,success
由2我試圖把一個回調與incr
跳躍,但它看起來像只get
型命令有回調。我在腳本中有一個client.end();
,但它阻止了我重新加載頁面,所以我評論了它。我懷疑這是我問題的根源。如果是這樣,client.end
屬於哪裏?
var http = require("http");
var redis = require("redis");
var async = require("async");
client = redis.createClient();
http.createServer(function(request, response) {
// key "success" set to 0 externally, through redis-cli;
client.set("key0", "19");
client.set("key1", "11");
response.writeHead(200, {"Content-Type": "text/plain"});
async.series([
shortcut("key0"),
shortcut("key1"),
shortcut("success")
],
function(err, results){
if (results[0] > results[1]) {
client.incr("success", function(err, reply) {
response.write("incr done");
});
response.write(results[0] + "\n\n");
response.write(results[1] + "\n\n");
response.write(results[2]);
}
response.end();
// client.quit();
});
}).listen(8000);
function shortcut(key) {
return function(callback) {
client.get(key, function(err, reply) {
callback(null, reply);
}
);
}
}
偉大:(我想我需要路由來解決這個問題? – 2012-04-23 23:11:11
那麼,你也可以簡單地檢查請求的資源是否匹配或不匹配(任何適合你的更好)給定的模式。當index.html被請求時調用'incr' – JustSid 2012-04-23 23:13:33
謝謝你,你是絕對正確的,它現在正在運行,我用了一個'url.parse',直到我找出如何處理請求。 – 2012-04-23 23:20:51