html和node的eventloop执行区别

本文对比分析了HTML和Node.js环境下事件循环和任务队列的执行差异。在HTML中,微任务总是在宏任务结束后执行。而在Node.js中,微任务的执行时机由引擎控制,会在当前所有定时器执行完毕后处理。通过示例代码展示了不同环境下输出顺序的差异,揭示了两者在处理异步操作上的细节区别。

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

该文已经介绍的很详细了

我这里只是写一个更短的例子来说明一下:

html和node代码一样:

console.log(1);

    setTimeout(() => {
        Promise.resolve(console.log(2))
            .then(() => console.log(3))
    });

    setTimeout(() => {
        Promise.resolve(console.log(4))
            .then(() => console.log(5))
    });

console.log(6);

html的script标签里贴上该代码,执行结果是:

1,6,2,3,4,5

node里贴上该代码,执行结果是:

1,6,2,4,3,5 

这里的重要区别是html只会按照任务队列的顺序进行执行。

而node里有一个timer过程,会执行时间到的计时器。

比如任务队列里有好几个timerout时间都到了,node会先取出最前面的执行,完事后,再取下一个,直到没有timeout可以执行了,就执行相关的微任务。

所以:

html的微任务是挂到一次执行栈结束后的末尾等待执行,所以比宏任务早。

node的微任务是由其引擎决定执行时机。在6大阶段的后面。

具体看顶部的链接。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值