首页 > 解决方案 > 在嵌套的 for 循环中进行 fetch 调用

问题描述

我目前正在将我的本地函数转换为 lambda 函数,并且遇到了一些困难。在以前的方法中,我得到了一个 url 片段数组,我必须以编程方式将这些片段串到前缀以获取数据。

从逻辑上讲,我认为最好的方法是做一个嵌套的 for 循环。浏览一系列前缀,添加 url 片段并执行 fetch 调用。

它在本地运行良好,但 lambda 会引发错误。

function getVariantData(data, cb) {
  for (var i = 0; i < chapters.length; i++) {
    let source = chapters[i];
// chapters = url prefix
    data.forEach(async element => {
      let res = await fetch(chapters[i] + element);
//element = url fragment
      let body = await res.text();
      createVariantsFile(element, source, body, cb);
    });
  }
}

这段代码运行良好,但我了解到 lambda 对 forEach 和 async/await 的要求更严格,所以我将代码更改为此,我一直在处理一堆问题。我还没有写完console.log,因为……好吧,我还没有克服错误。

async function getVariantData(data, cb) {
  for (var i = 0; i < chapters.length; i++) {
    let source = chapters[i];
    const promises = data.map((datum, index) => fetch(source+datum))
    const chapterData = await Promise.all(promises)
    console.log(chapterData)
    // await data.map(async element => {
    //   return await (chapters[i] + element);
    //  createVariantsFile(element, source, body, cb);
    // });
  }
}

标签: javascriptnode.jsasynchronouslambda

解决方案


推荐阅读