宏队列与微队列

js执行时有两个异步队列:宏队列微队列。优先执行微队列中的任务,而且每次执行完宏队列中的任务后,都会查看微队列中是否有任务,假如有任务则先执行微队列中的任务,再执行宏队列中的任务。例外:浏览器会先执行一个宏任务——script

  • 宏队列存储的是:scriptsetTimeoutsetIntervalsetImmediateI/OUI rendering、ajax回调
  • 微队列存储的是:promisemutationprocess.nextTickObject.observeMutationObserver
setTimeout(() => {
    console.log('我是宏队列1')
    Promise.resolve(3).then(val => {
        console.log('我是微队列' + val)
    })
}, 0)
setTimeout(() => {
    console.log('我是宏队列2')

}, 0)
Promise.resolve(1).then(val => {
    console.log('我是微队列' + val)
})
Promise.resolve(2).then(val => {
    console.log('我是微队列' + val)
})

console.log('我是主线程')

执行结果如下:

我是主线程
我是微队列1
我是微队列2
我是宏队列1
我是微队列3
我是宏队列2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。