Node.js---宏任务和微任务

本文详细介绍了Node.js中的宏任务和微任务,包括它们的异步性质、执行顺序以及事件循环(Event Loop)机制。宏观上,宏任务包括setImmediate、setTimeout、setInterval、I/O、异步ajax等,而微任务则主要包括Promise的then、catch、finally和process.nextTick。在事件循环中,所有微任务会在每次宏任务执行完毕后立即执行,直至微任务队列清空,然后才会开始下一个宏任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宏任务和微任务都是异步耗时任务。

宏任务有setImmediate,setTimeout,setInterval, I/O,异步ajax,文件操作等

宏任务中的优先级:

setImmediate > setTimeout >  间歇调用 > I/O > 异步ajax

微任务有promise(then,catch,finally),process.nextTick等

微任务中的优先级:

Process.nextTick >  Promise(then,catch,finally)

js代码可以分为同步代码和异步代码,先执行同步代码,遇到异步代码不会执行,将异步代码放到异步任务队列中,异步任务又分为宏任务和微任务.

主线程不断从异步任务队列中读取事件,这个过程是循环不断的,这种运行机制就叫做Event Loop(事件循环)

一次事件循环机制可以将所有的微任务执行完毕,一次事件循环只能执行一个宏任务。

console.log('1');   //同步代码

setTimeout(function () {
 	console.log('2');  //宏任务里的同步代码
		process.nextTick(function () {
		console.log('3');  //宏任务里的微任务
	})
 new Promise(function (resolve) {
 console.log('4');  //宏任务里同步代码
	resolve();
	}).then(function () {
	console.log('5')  //宏任务里的微任务
	})
});

process.nextTick(function () {
 console.log('6');    //微任务
});

new Promise(function (resolve) {
 console.log('7');  //同步代码
 resolve();
}).then(function () {
 console.log('8')  //微任务
})

setTimeout(function () {
 console.log('9');   //宏任务里的同步代码
 process.nextTick(function () {
 console.log('10');  //宏任务里的微任务
 });
 new Promise(function (resolve) {
 console.log('11');  //宏任务里的同步代码
 resolve();
 }).then(function () {
 console.log('12')  //宏任务里的微任务
 })
});   

// 1 7 6 8 2 4 3 5 9 11 10 12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值