在异步函数节点 JS 中维护顺序

时间:2021-07-27 10:30:52

标签: javascript node.js

我是 NodeJs 的新手。 我想按 url 的顺序推送文件数组中的元素。但我得到随机顺序。 下面是相同的代码。任何人都可以建议我在这里做错了什么。

const mergePdf =async  (urlArray, files) => {
  for (let i = 0; i < urlArray.length; i++) {
    try {
      const pdfBytes = await fetch(urlArray[i]).then((res) => {
        return res.arrayBuffer();
      });
      let bytes = new Uint8Array(pdfBytes);
      files[i]=bytes;
    } catch (err) {
      console.log(err);
    }
  }
}

1 个答案:

答案 0 :(得分:-1)

在像这样的承诺中编写 api 调用的单独函数

const other_func = (url) => {
  return new Promise(async (resolve) => {//updated line
     try {
       const pdfBytes = await fetch(url).then((res) => {
       let bytes = new Uint8Array(pdfBytes);
       resolve(bytes);// return value pass in resolve method [Updated]
     });
     
    } catch (err) {
     console.log(err);
    }
 })
}

并在您的原始函数中使用 await 调用此函数 喜欢

const mergePdf =async  (urlArray, files) => {
 for (let i = 0; i < urlArray.length; i++) {
 files[i] = await other_func(urlArray[i])
 }}
相关问题