如何在 await promise.all 中进行三次加载尝试并在失败时返回默认值

问题描述 投票:0回答:0

我在工作人员中有一个异步函数来加载图像数据。这几乎总是可以毫无问题地工作。有时加载过程似乎不会立即工作,然后我不再从工作人员那里得到任何反馈。这就是为什么我希望加载过程在失败时最多再尝试两次。如果文件还是加载不出来,我想返回一个默认的数据集,这样无论如何都能得到反馈

例如

data = "not loaded";

return {id, data}

这是我的加载函数。我已经读过一些关于 try 和 catch 的内容,但我仍然没有必要的理解将它与总共 3 次加载尝试联系起来并在我的函数中实现它。

async LoadData(newImages){

   const ids = newImages.map(el => el.id);
   const loader = new THREE.ImageBitmapLoader();   //from three.js library
                
   const sharedImageDatas = await Promise.all(
   ids.map(async (id) => {      
                            
      const url = app_constants.SECOND_IMAGE_LIBRARY + id;          
      let image = await loader.loadAsync(url);
                
      let canvas = new OffscreenCanvas(image.width, image.height); 
      let context = canvas.getContext('2d'); 
      context.drawImage( image, 0, 0 );
                
      let imageData = context.getImageData(0, 0, image.width, image.height);
                        
      const data = new Uint8Array(new SharedArrayBuffer(imageData.data.length));
      data.set(imageData.data, 0);
 
      image = canvas = context = imageData = null;
            
      return {id, data}; 
      })
   );   
        
   return sharedImageDatas;         
}

任何人都可以给我任何关于如何扩展我的功能以满足我想要的东西的建议吗?

javascript async-await try-catch
© www.soinside.com 2019 - 2024. All rights reserved.