我想填充我的var todos
與我在我的Redis服務器,我得到,我必須使用承諾,但我可能不是在正確的地方。使用承諾和redis回調
首先,我得到所有ID爲.smembers()
函數,併爲每個ID我得到的對象與正確的ID和解析到todos
。
var todos=[];
res.locals.redis.smembers("todo:20", function(err, reply){ // i.e. SMEMBERS todo:20 returns 0 and 1
var promises=reply.map(function(elem){
res.locals.redis.get("todo:20:"+elem, function(err, reply1){ // i.e. GET todo:20:0
return new Promise(function(resolve, reject){
todos.push(JSON.parse(reply1));
resolve();
});
});
});
Promise.all(promises)
.then(function(){
res.locals.redis.quit();
res.render('todolist.ejs', {todo: todos});
})
.catch(function(reason){
console.log(reason);
});
});
這promisify功能改變加載速度?我得到它看起來更好,但我仍然困惑爲什麼我會比以前的答案更好 –
答案是**否**,_promisify_函數不會影響性能。正如你在例子中看到的,它返回一個簡單的邏輯對象:'拒絕'承諾,當有錯誤,或'解析'異步調用的結果,否則。 – alexmac