Javascript 回调和异步

Javascript 回调和异步,javascript,Javascript,我有一个JavaScript函数,如下所示。它首先检索一些作为图像位置的测量点。要检索图像,有一个getFile函数在回调中处理图像 现在的问题是,我希望最后一个console.log显示数据和measurepoints长度相同。但是,数据长度显示为0 在继续执行for循环之外的代码之前,如何确保for循环首先完成 async retrieveMeasuredData() { let measurepoints = await DataService.getData(); let

我有一个JavaScript函数,如下所示。它首先检索一些作为图像位置的测量点。要检索图像,有一个getFile函数在回调中处理图像

现在的问题是,我希望最后一个console.log显示数据和measurepoints长度相同。但是,数据长度显示为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
   });
}


async retrieveMeasuredData(){
让measurepoints=等待DataService.getData();
让数据=[];
for(设i=0;i{
设blob=bMap1.slice(0,bMap1.size,“image/jpg”);
让blobUrl='original:\''+URL.createObjectURL(blob)+'\'';
log('image url:'+blobUrl);
数据推送(blobUrl);
});
}
console.log('data length:'+data.length+'measurepoints length:'+measurepoints.length);
这是我的国家({
数据:数据
});
}

您可以尝试使用和
控制台。登录
谢谢大家,最后我使用了Promise.all():)