2014-07-18 26 views
0
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(); 
}; 

此代码失败。下面的代码工作,没有使用承诺(如下所示)。我想解决的代码在上面。使用promise在Node.js中重写Redis调用

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}); 
}); 
}); 

我需要在第一个代码示例中更改它以使其工作? (注意:如果我可以在最后,最后或另一个'then'中调用res.render,那会更好。

回答

1

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

+0

我欣赏它;这很有帮助。 – jumar