【发布时间】:2013-12-06 21:30:55
【问题描述】:
我需要对 Redis db 执行多个请求,并且我需要一个请求的响应来执行下一个请求。
我们来分析一下这个例子: (我使用node_redis 处理请求)
var message-id = undefined;
// request the next id
client.incr("message-id", function(err, id) {
message-id = id;
});
// use the 'next id' for storing a message
client.hmset("messages", message-id, messageContent);
这种方式行不通,因为当我调用client.hmdet() 时,message-id id 仍然未定义。
下面是偷懒的方式,就是把client.hmdet()放在client.incr()回调里面。
var message-id = undefined;
// request the next id
client.incr("message-id", function(err, id) {
message-id = id;
// use the 'next id' for storing a message
client.hmset("messages", message-id, messageContent, function(){
//more request here
});
});
我认为这不是一个好方法,因为如果我有很多链接的请求,我需要将每个请求放在它之前的请求回调中,这将创建一个难以维护的代码块。
我对异步处理大量请求的最佳做法感兴趣。有人可以给我建议吗?
【问题讨论】:
-
你在第一个代码块的第 6 行缺少一个结束符 )