使用promises重写Node.js中的Redis调用

时间:2014-07-18 17:09:55

标签: javascript node.js redis

var Q = require('q');
Q.nfcall(client.get("time_clock", function (err, reply) {
    var time = reply.toString();
    return time;
 })).then(function(time) {
 client.get("time_predicted", function (err, replier) {
    mom=replier.toString();
    res.render('time', {watch: time, moment: mom});
 })
 }).fail(function(err){
   console.log('Error.')})
 .done();
};

此代码失败。下面的代码可以使用,不使用promises(如下所示)。我要解决的代码就在上面。

client.get("time_clock", function (err, reply) {
    time=reply.toString();
    console.log("in here"+time); // Will print `OK`
client.get("time_predicted", function (err, replier) {
    mom=replier.toString();
    res.render('time', {watch: time, moment: mom});
});
});

在第一个代码示例中我需要更改哪些内容才能使其正常工作? (注意:如果我可以在最后或最后一个'那么'调用res.render会更好。)

1 个答案:

答案 0 :(得分:1)

我不会直接回答你的问题;但一个简单的解决方案是使用redis-then,一个使用promises的NodeJS的redis库。