JS的执行机制

2019-07-27  本文已影响0人  en_young

如果有多个异步任务的时候呢?

1、首先还是将所有的任务分为同步任务与异步任务,如图一:

图1

2、首先打印出1,然后遇到第一个异步任务的时候,会将该行代码提交给异步进程处理,如果点击了,才会将回调函数写入任务队列,如果不点击,就不会写入任务队列中去。

3、如果不点击,那么继续执行,打印出2,然后遇到下一个异步任务,将该行代码提交给异步进程处理,等到3秒后才会将回调函数写入任务队列中。此时程序会再次查看任务队列,然后发现队列中的回调函数,将其放入执行栈中,执行,打印出3;

4、如果此时点击,就会将点击的回调函数添加至任务队列,同步任务完成后,还会回到任务队列中查看是否有新的任务,此时发现有点击的回调函数,就会将其放入执行栈中,执行点击。(当然如果是在3秒之前点击的,当然会先输出click)

此时任务队列中为空,但是同步任务执行完仍然会重复来查看任务队列中是否有新的任务,这个循环就叫做“事件循环”。

总结如下(图3):

图3
上一篇 下一篇

猜你喜欢

热点阅读