保持获取异步操作的索引

时间:2020-05-11 17:38:11

标签: javascript

我必须{fetch张这样的照片:

  for (const imgurl of urls){
        fetch('https:/........url=' + imgurl)
        .then(res => res.blob())
        .then(blob => {
          console.log(blob);
          blobs.push(blob);
        });

当我将照片插入阵列时,我想保持for循环的顺序。 这意味着我正在寻找一种方法:

  1. index添加到fetch 本地,并在回调中读取它。
  2. 当我使用index进行回调时,将结果blob插入到index数组的右侧blobs处。 (如果我在2之前获得索引4,则将其放入4,或者稍后以某种方式保存并重组数组)

假设数组大小未知,可以为5-9。

1 个答案:

答案 0 :(得分:1)

使用Promise.all:

  const fetches = [];
  for (const imgurl of urls){
    fetches.push(fetch('https:/........url=' + imgurl));
  });
  Promise.all(fetches).then(async results => {
    for (const res of results) {
      const blob = await res.blob();
      console.log(blob);
      blobs.push(blob);
    }
  });

像这样,未经测试。 Promise.all保证您在完成所有提取操作后按有效顺序获得结果数组