【发布时间】:2020-04-03 20:31:10
【问题描述】:
我想从 async / await 函数 A 返回一个对象以将其传递给另一个函数。
目前我得到的结果是Promise{ <pending> }' 或未定义。
功能A:
const parseRss = data => data.forEach(rssLink => {
const getFeed = async () => {
try {
const feed = await rssParser.parseURL(rssLink.rss);
const emailContent = {
emailBody: {
title: feed.title,
content: []
}
}
feed.items.forEach(item => {
feedObj.emailBody.content.push(`${item.title} : ${item.link}`)
});
return emailContent;
} catch (e) {
console.error(e);
}
};
return (async () => {
return await getFeed();
})();
});
功能B:
try {
const data = await getDataWithRss();
const emailData = await parseRss([{rss:'http://reddit.com/.rss'}]); // emailData is undefined
return formatEmail(emailData);
} catch (error) {
console.log(error);
}
如何从函数 A 返回 emailContent 以在函数 B 中使用它?
谢谢!
【问题讨论】:
-
await必须在async函数内。函数 B 是async函数吗? -
而
parseRss正在返回data.forEach(...)。forEach将始终返回undefined -
是的,函数 B 是异步的
-
如果您有多个网址会怎样?是否要在已解析的承诺中返回
emailContent数组(每个 URL 一个)?
标签: javascript node.js asynchronous promise async-await