小郑详解JavaScript的运行机制

第二,当前宏任务执行完成后,会查微任务的事件队列,将将全部的微任务依次执行完,再去依次执行宏任务事件队列。

上面代码中promise的then是一微任务,因此它的执行在setTimeout之前。

需要注意的是:在node环境下,process.nextTick的优先级高于promise。也就是可以简单理解为,在宏任务结束后会先执行微任务队列中的nextTickQueue部分,然后才会执行微任务中的promise部分。

所以最后总结一下,对于文章一开头提到的那段代码,我们可以准确的理解为:

1秒后,setTimeout里的函数会被推入event queue,而event queue(事件队列)里的任务,只有在主线程空闲时才会执行。也就是需要同时满足两个条件(1)1秒后。(2)主线程必须空闲,这样1秒后才会执行该函数。

现在,关于JavaScript的运行机制,大家应该都理解了,有问题欢迎留言。


分享到:


相關文章: