我有一个名为 getArticleBody()的函数,该函数将抓取给定的URL并提取一些文本。这是一个异步功能。
然后我有一个名为 getAllArticles()的函数,该函数通过URL列表迭代 getArticleBody()。
async function getAllArticles(articles) {
let result = [];
for (article of articles) {
article.body = await getArticleBody(article.url);
result.push(article);
}
return result;
}
let articles = [...]
articles = await getAllArticles(articles);
console.log(articles);
这很好。
我想知道并行运行同一功能的最佳方法是什么。使用Promise.all()
吗?
async function getAllArticles(articles) {
let bodies = [];
let result = [];
for (article of articles) {
let body = getArticleBody(article.url);
bodies.push(body);
}
bodies = await Promise.all(bodies);
articles.forEach((element, i) => {
article.title = element.title;
article.url = element.url;
article.date = element.date;
article.body = bodies[i];
result.push(article);
});
return result;