1
我有执行我的程序很大的问题。 我们使用Redis的HKEY和测试,如果该键存在问题线程函数执行nodejs/redis
hgetall tags
"X5"
"6"
"X2"
"7"
这是程序:
function firstChoiceChannel(){
var i=0;
var listRep
console.log(tags);
for(var k in tags){
console.log('@'+k+'|'+tags[k]);
client.hexists('tags',tags[k],function(err,rep){
console.log(tags[k]+"=>"+k+' i '+rep)
if(rep===1){
client.hget('tags',tags[k],function(err,rep){
console.log('value:'+rep);
})
console.log('ok');
}
});
}
}
这个控制台
[ 'X1', 'X2', 'X3', 'X5' ]
@0|X1
@1|X2
@2|X3
@3|X5
X5=>3 i 0
X5=>3 i 1
ok
X5=>3 i 0
X5=>3 i 1
ok
value:7
value:7
执行程序为什么变量标签[K]在子函数client.hexists(... function(err,rep){}) 总是等于表的最后一个值?
感谢您的帮助
文森特
它只是测试;)非常感谢 – Vsplit 2012-03-14 10:43:18
你认为它的功能是异步的(没有测试)? – Vsplit 2012-03-14 20:41:43
任何函数都不会返回它的答案,而是需要一个与答案一起调用的回调函数,(很可能)是异步的。 ['async'](https://github.com/caolan/async)对于这些事情来说是一个非常好的控制流程库。 – 2012-03-15 10:56:55