回调和异步

时间:2020-02-06 02:00:55

标签: javascript

我具有如下JavaScript函数。它首先检索一些测量点,这些测量点是图像位置。要检索图像,有一个getFile函数可以处理回调中的图像。

现在的问题是我希望最后一个console.log显示数据和测量点的长度相同。但是,数据长度显示为0。

在继续执行for循环外的代码之前,如何确保for循环先完成?

async retrieveMeasuredData() {

   let measurepoints = await DataService.getData();
   let data = [];


   for (let i=0; i<measurepoints.length; i++) {
     let item = measurepoints[i];

     DeviceService.getFile(item.data.value, bMap1 => {
       let blob = bMap1.slice(0, bMap1.size, "image/jpg");
       let blobUrl = 'original: \'' + URL.createObjectURL(blob) + '\'';
       console.log('image url: ' + blobUrl);
       data.push(blobUrl);
     });
   }

   console.log('data length: ' + data.length + ' measurepoints length: ' + measurepoints.length);

   this.setState({
     data: data
   });
}


0 个答案:

没有答案