vue for 循环中使用 await(转)
await 和 async必须成对出现,如果调用await的地方,无法正确匹配到async则会报错,例如:forEach外面写async,forEach中使用await,则无法匹配。
async tidyData(){
item.categorys.forEach(asyncitem2 => {
let customModelList =await this.tidyDataCustom(item2)
})
}
forEach:
async tidyData(){
await Promise.all(
item.categorys.forEach(asyncitem2 => {
letcustomModelList =await this.tidyDataCustom(item2)
})
)
}
for:
async tidyData(){
for(let item2 of item.categorys){
// 款式选项数据整理
let customModelList =await this.tidyDataCustom(item2)
}
}
forEach属于并发操作,所以需要锁定住每一个循环体,而for不是并发操作,所以无需锁定每一次的循环。
如果需要等待的方法中也去async并且等待里面的耗时操作,可以如下方式:
tidyDataCustom(item2){
return newPromise(async resolve => {
await this.getCategoryStyle(item2)
resolve()
})
}
返回结果放入到resolve(xx)中,如果没有结果就resolve()