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在推送所有电子邮件之前返回。为什么呢?
答案 0 :(得分:0)
您的redisClient ..链返回一个承诺,但您不会将该承诺返回给地图。
add_action('reviews', array( EDD_Reviews::get_instance(), 'load_frontend'));
应该修复它。