异步/等待如何并行运行?

时间:2019-09-06 09:56:44

标签: javascript node.js async-await

我有一个名为 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;

0 个答案:

没有答案
相关问题