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