gpt4 book ai didi

node.js - 在 nodejs 上循环 redis 返回的 promise

转载 作者:可可西里 更新时间:2023-11-01 11:20:34 24 4
gpt4 key购买 nike

我正在尝试在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com