vue for 循环中使用 await

10 篇文章 0 订阅

await 和 async必须成对出现,如果调用await的地方,无法正确匹配到async则会报错,例如:forEach外面写async,forEach中使用await,则无法匹配。

async tidyData(){
    item.categorys.forEach(async item2 => {
        let customModelList = await this.tidyDataCustom(item2)
    })
}

forEach处理:

async tidyData(){
    await Promise.all(
        item.categorys.forEach(async item2 => {
            let customModelList = 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 new Promise(async resolve => {
        await this.getCategoryStyle(item2)
        resolve()
    })
}

返回结果放入到resolve(xx)中,如果没有结果就resolve()

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值