vue中函数为什么不能在异步操作里return出数据
一直有这疑惑,后在思索异步事件机制的时候略有体会,、这就涉及到主线程,支线程又名任务队列,而这任务队列有两大分支宏任务和微任务,关于主线程与支线程的关系请看我另一篇文章先看一个例子为什么没有返回10,且听我细细道来~首先,函数是作为一个执行操作,执行它里面后续加入含有异步操作,但是,但是--》》编译器进入函数时是同步的,进入函数到打印出 ‘我是同步’ ,这个过程都还是同步在主线程执行的遇到setT
一直有这疑惑,后在思索异步事件机制的时候略有体会,、这就涉及到主线程,支线程又名任务队列,
而这任务队列有两大分支宏任务和微任务,关于主线程与支线程的关系请看我另一篇文章
先看一个例子
为什么没有返回10,且听我细细道来~
首先,函数是作为一个执行操作,执行它
里面后续加入含有异步操作,但是,但是--》》编译器进入函数时是同步的,进入函数到打印出 ‘我是同步’ ,这个过程都还是同步在主线程执行的
遇到setTimeout的时候,认定为异步操作就得把这段代码放到任务队列中执行,看直观图
如图,先进入主线程执行完主线代码,而执行主线程代码时显然并没有return的这句代码的,因为它被拐跑了,问题来了:拐跑了return,那等到时候setTimeout执行完再return还回来不就得了,在代码的世界里,出来混是没得还的,看看这句话,那个标红的等字,主线程是不等人的,都说主线程是同步的嘛,所以主线程解析async函数到结尾都没有遇到return,就返回undefined了,
而任务队列里的return aa 这句代码怎么办,它已经跟它老子也就是async函数没有关系了,
它就是条简单的语句跟声明的 var bb = 100一样,没有作业,只是浏览器不报错而已
更多推荐
所有评论(0)