JS中的宏任务和微任务(EventLoop)
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事,提高效率。
任务队列:单线程意味着所有任务需要排列,前一个任务结束,才会执行后一个任务,任务队列分为同步任务和异步任务,先执行同步任务再执行异步任务。
EventLoop:可以分为宏任务和微任务。
宏任务: script、setTimeout、setInterval、setImmediate(node.js)、requestAnimationFrame
微任务:Promise的then/catch、process.nextTick(node.js)、MutationObserver、observer
除了script是第一次就执行,其他都是微任务优先于宏任务。