为了账号安全,请及时绑定邮箱和手机立即绑定

async和await在生命周期中为什么没起作用?怎么回事哈啊?

async和await在生命周期中为什么没起作用?怎么回事哈啊?

不负相思意 2019-08-17 10:57:57
我想等created结束再执行mounted所以用了async和await但是发现这样好像没有起作用这是为什么?created(){this.test()},mounted(){console.log(2)},methods:{test2(){returnnewPromise((resolve,reject)=>{setTimeout(()=>{console.log(1)resolve()},200)})},asynctest(){awaitthis.test2()}}
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

mounted本来就是在created结束之后执行的。
async函数不会中断JavaScript的执行,而是将await的函数放入任务队列中。
mounted中console.log(2)是同步的,会先被执行(具体需要了解任务队列和Vue生命周期)
如果你要确保console.log(2)要在之后执行,建议你在mounted或created中用this.test().then(()=>console.log(2))
                            
查看完整回答
反对 回复 2019-08-17
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

按照我的理解,asyn函数的外部调用asyn函数的时候,不会被其内部的await阻塞,也就是说created方法不会因为test内部的await而等待,created早就执行完了,test内部还在await没有返回,created应该用then去接收test的返回值undefined。
你应该是想用await来阻塞javascript执行,其实这是行不通的,await其实不会阻塞任何(非asyn)方法执行,本质上await也不能阻塞asyn函数的执行。created不是asyn函数,不可能等待或者阻塞。
                            
查看完整回答
反对 回复 2019-08-17
  • 2 回答
  • 0 关注
  • 1224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信