私はforループで約束を使用しようとしています。 Promise.allを初めて使用する時が来たような気がしますが、動作させることができないようです。nodejsでredisによって返された約束をループします
ここは、私がこれまで持っているものです。
redis.keys('en:230:*')
.then(function(result) {
// result = ['en:230.1', 'en:230.2', 'en:230.5', 'en:230.10', 'en:230.3', 'en:230.75']
for (var k = 0; k < result.length; ++k) {
redis.zcount(result[k])
.then(function(r) {
console.log(r);
})
}
})
私の目標は、すべての「結果」を数えることであるセットをソートし、アンと呼ばれる別のソートセット内のすべての結果を置く:230:トップ これは、カウントが含まれますスコアの結果と値の1,2,5,10,3,75。
現在、私はすべての「結果」とカウントをループスルーしようとしています。
誰でも私に手を差し伸べることができますか?
編集:
Promise.allからわかったことは次のとおりです。 このようなことは機能するはずですか?
を使用できvar array = [];
redis.keys('en:230:*')
.then(function(result) {
// result = ['en:230.1', 'en:230.2', 'en:230.5', 'en:230.10', 'en:230.3', 'en:230.75']
for (var k = 0; k < result.length; ++k) {
array.push(redis.zcount(result[k]));
}
return Promise.all(array);
})
.then(function(r) {
console.log(r);
})
あなたは既に解決策を知っているような音: 'Promise.all'。どうしたの? – Bergi
はい、 "これと似たようなもの"はうまくいくはずです(ただし、コールバックの中に 'var array = []'を置くことをお勧めします)。試してみませんか? – Bergi
ありがとう、それは実際にうまく動作します。 – Tom