vue for 循环中使用 await

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()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。