【发布时间】:2018-07-05 14:04:27
【问题描述】:
旨在获取在消息历史记录中找到的用户的图片网址。
显然,在我遍历 data.directMessages.map 对象图像 url 值之后,它永远不会到达 res.render('index', {data})
我确信我需要data.directMessages.map 首先执行所有操作,然后才返回结果。你可以帮帮我吗
弄清楚如何?
这是我的伪代码:
app.get('/', (req, res) => {
Promise.all(arrayOfPromises).
then(data => {
return {
...
...
directMessages: ...
}
}).
// HELP NEEDED HERE !!!
then(data => {
data.directMessages.map(info => {
const getData = await getProfileDataById(info);
info.profile_img_url = await getData.profile_img_url;
});
return data;
// HELP END !!!
}).then(data => {
res.render('index', {data});
})
})
我正在考虑这样做
const results = data.DirectMessages.map(async (info)=> {
// do stuff and return results
});
Promise.all(results).then(data => data);
这是解决问题的正确方法吗?
【问题讨论】:
-
map(async info =>?await在async函数之外很糟糕,我相信。 -
另外,不要忘记
map返回修改后的数组,并且它不会就地修改它。如果你想用map函数修改data,只需按照data.directMessages = data.directMessages.map(...的方式进行即可。 -
const getData = await getProfileDataById(id);是id是data.directMessages的一部分?还是所有data.directMessages都一样? -
@karthik 哦,是的。我应该用信息替换 id。
-
我还想检查
getProfileDataById(info)&getData.profile_img_url是否返回承诺
标签: javascript node.js promise es6-promise