gpt4 book ai didi

redis - 为什么在使用 node 和 redis 时我的 promise 没有解决?我的数组返回第一次迭代而不是等待整个代码运行

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

app.get('/lists/get_emails', function(req, res) {
// Return *all* the emails that appear in *any* of the lists in
// `req.body.lists`. Emails should only appear once.
let queryArr = req.query.lists.split(",");
var retArr = [];
Promise.all(queryArr.map(list => {
redisClient.smembersAsync(list)
.then((results) => {
if(results) {
console.log('retArr before push', retArr);
for (email in results) {
retArr.push(results[email])
}
console.log('retArr after push', retArr);
return Promise.all(retArr);
} else {
res.send({results: null});
}
})
.then(result => {
console.log('resssssss!', result);
return Promise.all(result);
})
.catch(error => {
console.log('error submitting final emails', error);
});
}))
})

当返回 retArr 时,它包含一个列表的电子邮件,但不是所有列表。我的控制台日志显示列表已加载到 retArr 中,但似乎 retArr 在所有电子邮件被推送之前就返回了。为什么?

最佳答案

您的 redisClient.. 链返回一个 promise ,但您没有将该 promise 返回到 map 。

return redisClient(... 应该修复它。

关于redis - 为什么在使用 node 和 redis 时我的 promise 没有解决?我的数组返回第一次迭代而不是等待整个代码运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833371/

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