我正在尝试在 for 循环中使用 promise。 我觉得是我第一次使用 Promise.all 的时候了,但我似乎无法让它工作。
这是我目前所拥有的:
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);
})
}
})
我的目标是计算所有“结果”排序集并将每个结果放入另一个名为 en:230:top 的排序集中 这将包含分数的计数结果和值的 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 :
redis.keys('en:230:*')
.then(function (results) {
// collect individual promises in an array
var queries = results.map(function (r) {
return redis.zcount(r);
});
// return a promise that resolves when all of query promises resolve
return Promise.all(queries);
})
.then(function (counts) {
// do something with counts
})
.catch(function(err){
// oops
});
关于node.js - 在 nodejs 上循环 redis 返回的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327754/