假设我的服务器正在准备发送一个新对象以响应 POST 请求:
var responseObj = {
UserID : "0", // default value
ItemID : "0", // default value
SomeData : foo
}
现在,当我创建这个新对象时,我想增加我在 redis 中使用的UserId
和ItemID
计数器来跟踪这两个项目。但这似乎需要两个单独的异步回调,这对我来说似乎是个问题,因为我不能将其余的响应编写代码粘贴到其中一个回调中。
我的意思是,如果我只需要担心一个键和一个回调,我会写如下内容:
app.post('/', function(req, res, next) {
// do some pre-processing
var responseObj = {};
redis.incr('UserID', function(err, id) {
responseObj.UserID = id;
// do more work, write some response headers, etc.
res.send(responseObj);
});
}
但是我需要做两个 INCR 回调怎么办?我认为这是不对的,因为一切都是异步的,我不能保证我的响应会被正确设置......
app.post('/', function(req, res, next) {
// do some pre-processing
var responseObj = {};
redis.incr('UserID', function(err, id) {
responseObj.UserID = id;
// do some work
});
redis.incr('ItemID', function(err, id) {
responseObj.ItemID = id;
// do some work
});
res.send(responseObj); // This can't be right...
}
作为一个新手 node.js 和 redis 程序员,我觉得我错过了一些明显的东西......