js执行机制(宏观,微观)

  1.macro-task(宏任务):包括整体script代码,setInterval,setTimeout

  2.micro-task(微任务):promise ,process.nexttrick(nodejs的内容)

  执行顺序:宏任务>微任务

接下来我们可以看看这段代码

 setTimeout(() => {

   console.log(1);

   process.nexttrick( () => console.log(5))

},0);

new Promise((resovle,reject) => {

   console.log(2);

   resovle();

}).then(() => console.log(3))

   console.log(4);

这段代码输出的是什么??

接下来我们看一下上面那张图解来解答吧!

首先我们找到宏任务,也就是整体代码,定时器等。那么开始执行整体代码,执行promise中的整体代码输出2,然后就是输出4,这时所有的整体代码已执行完毕,继续查找当前已执行的代码中是否包含微任务,我们可以知道promise.then是微任务那么就是执行输出3,接着查找其他的宏任务那就是setTimeout输出1,再输出微任务5啦。

所以执行顺序就是2,4,3,1,5

(请注意,node环境下的事件监听依赖libuv与前端环境不完全相同,输出顺序可能会有误差)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值