我很难让节点、redis 和异步来做我想做的事。我正在尝试非常基本的东西来掌握重定向控制流的模式。key0 > key1
在这里,我持有一个计数器变量“成功”,如果比较为真,该变量会增加一。它们现在是静态的,所以它总是正确的;我唯一想改变的是增加success
. 我刷新浏览器以重新运行比较并success
再次递增。
我的麻烦是:当页面刷新时,success
跳转 2。我尝试使用 回调incr
,但看起来只有get
-type 命令有回调。我的脚本中有一个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);
}
);
}
}