在Node.js中,宏任务和微任务是异步任务的两种类型,它们在事件循环中按照特定的顺序执行。
宏任务(Macro-tasks)主要包括:
整体代码script:这是同步执行的。
定时器setTimeout,setInterval。
事件绑定。
ajax。
UI渲染。
微任务(Micro-tasks)主要包括:
promise,以及promise的then,catch,finally。
process.nextTick,这是一个Node.js特有的API,它将当前任务放到主栈最后执行,当主栈执行完毕后,先执行process.nextTick,再到等待队列中找微任务。
在事件循环中,一次事件循环机制可以将所有的微任务执行完毕,一次事件循环只能执行一个宏任务。宏任务中的优先级为:setImmediate > setTimeout > 间歇调用 > I/O > 异步ajax。微任务中的优先级为:Process.nextTick > Promise(then,catch,finally)。