私はを私のRedisサーバーに入れようとしています。私は約束を使わなければなりませんが、私はおそらく正しい場所にいません。redisコールバックで約束を使用
まず、.smembers()
のすべてのIDを取得し、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_機能はパフォーマンスに影響しません。例で見てきたように、単純なロジックを持つオブジェクトを返します。エラーがある場合は 'reject'約束を返し、それ以外の場合は非同期呼び出しの結果を' resolve'します。 – alexmac