eventloop,宏任务,微任务

123 阅读1分钟
  • js是非阻塞单线程
  • 执行栈:所有同步任务都再主线程上执行,执行完成,依次从任务队列(task queue)中拿任务执行,这种过程就叫做事件循环(eventloop
  • 宏任务和微任务: 微任务micro task事件:Promises(浏览器实现的原生Promise)、MutationObserver、process.nextTick, 宏任务 macro task事件:setTimeout、setInterval、setImmediate、I/O、UI rendering 这里注意:script(整体代码)即一开始在主执行栈中的同步代码本质上也属于macrotask,属于第一个执行的task
  • 执行栈,堆,任务队列 执行栈:先进后出,存储基本数据类型和引用数据的指针 堆:负责存储引用数据类型 任务队列:存储异步任务,先进先出
  • 实现优先级 同步代码优先级高于异步代码优先级 New Promise(fn)的fn是同步执行 Process.nextTick>Promise.then>setTimeout>setImmediate, setImmediate当有多个setimmediate则会遍历执行