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.. 链返回一个承诺,但您没有将该承诺返回给地图。
return redisClient(...
应该修复它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句