reqData(){

this.startLoading();

//获取分析结果数据

for (let i = 1; i <=24;i += 1) {

try {

let formattedValue = i.toString().padStart(4, '0');

this.requestData(formattedValue).then((PromiseResult) => {

if(PromiseResult.status==="success"){

this.images.push(PromiseResult.image)

this.positions.push(PromiseResult.position)

}

}).catch((error) => {

// 处理错误

console.error(error);

});

} catch (error) {

console.error(`Error fetching data for value ${formattedValue}:`, error);

}

}

console.log("数据请求成功");

this.endLoading();

},

需求:要等for循环中的异步任务所有完成才向下运行

使用 async/await 来等待所有异步任务完成后再执行后续代码

怎样使用嘞?配合Promise

async reqData() {

this.startLoading();

try {

// 使用 Promise.all 来等待所有异步任务完成

await Promise.all(

Array.from({ length: 24 }, (_, i) => {

let formattedValue = (i + 1).toString().padStart(4, '0');

return this.requestData(formattedValue)

.then((PromiseResult) => {

if (PromiseResult.status === "success") {

this.images.push(PromiseResult.image);

this.positions.push(PromiseResult.position);

}

})

.catch((error) => {

console.error(`Error fetching data for value ${formattedValue}:`, error);

});

})

);

console.log("数据请求成功");

} catch (error) {

console.error("Error fetching data:", error);

}

this.endLoading();

}

在此修改后的代码中,使用了 Promise.all 方法来等待所有的异步任务完成。它接受一个 Promise 数组作为参数,并返回一个新的 Promise,该 Promise 在所有输入的 Promise 都已解析或有一个被拒绝时解析。这样就能够确保所有异步任务都完成后再执行后续的代码逻辑。

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。