涨知识:浏览器中的event loop

2019-11-15  本文已影响0人  毛毛_000e

js在执行过程中会产生执行环境,这些执行环境会被顺序的放入执行栈中,如果遇到异步的代码,会被加入到task队列中,一旦执行栈为空,event loop就会从task队列中拿出需要执行的代码并放入执行栈中执行。

不同的任务源会被加入到不同的task队列中,任务源可以分为微任务(microtask,es6称为jobs)和宏任务(macrotask,es6称为task)

微任务包括process.nextTick、promise、Object.observe

宏任务包括script、setTimeout、setInterval、setImmediate

一般来说,微任务快于宏任务(除了script外)执行,浏览器会先执行一个宏任务,接下来有异步代码的话就执行微任务

上一篇下一篇

猜你喜欢

热点阅读