我具有如下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
});
}