vue中函数为什么不能在异步操作里return出数据

一直有这疑惑,后在思索异步事件机制的时候略有体会,、这就涉及到主线程,支线程又名任务队列,

而这任务队列有两大分支宏任务和微任务,关于主线程与支线程的关系请看我另一篇文章

先看一个例子

为什么没有返回10,且听我细细道来~
首先,函数是作为一个执行操作,执行它

 

里面后续加入含有异步操作,但是,但是--》》编译器进入函数时是同步的,进入函数到打印出  ‘我是同步’ ,这个过程都还是同步在主线程执行的

遇到setTimeout的时候,认定为异步操作就得把这段代码放到任务队列中执行,看直观图

如图,先进入主线程执行完主线代码,而执行主线程代码时显然并没有return的这句代码的,因为它被拐跑了,问题来了:拐跑了return,那到时候setTimeout执行完再return还回来不就得了,在代码的世界里,出来混是没得还的,看看这句话,那个标红的字,主线程是不等人的,都说主线程是同步的嘛,所以主线程解析async函数到结尾都没有遇到return,就返回undefined了,

而任务队列里的return aa 这句代码怎么办,它已经跟它老子也就是async函数没有关系了,

它就是条简单的语句跟声明的 var bb = 100一样,没有作业,只是浏览器不报错而已

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值