为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解process.nextTick(fn) 早于 setTimeout(fn,0) 执行

如何理解process.nextTick(fn) 早于 setTimeout(fn,0) 执行

红颜莎娜 2019-02-06 13:19:49
function compareFunc () {  console.log(1);  setTimeout(function () {    console.log(2);  }, 1);  process.nextTick(function () {    console.log(3);  });  setTimeout(function () {    console.log(4);  }, 0);}compareFunc();// 执行结果://1//3//2//4这个图该怎么理解。根据这个图,timers 不是在dile观察者前面吗?
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

牵扯到了js的单线程运行机制,因为机制规定的原因,所以简单粗暴的理解为:
1、setTimeout和setInterval在指定的运行时间到了后会查看本轮event loop是否执行完毕;
2、如果完毕就执行其中的回调,没有则会被移出本轮event loop放到下一轮进行判断,而process.nextTick与promise则会在本轮event loop结束后立即执行;
3、所以setTimeout代码书写在前面或者后面并不会对process.nextTick的执行产生影响,因为他就是优先级最低的(个人理解);

如果对其中的原因感兴趣可以去网上查阅js运行机制和event loop的相关资料


查看完整回答
反对 回复 2019-02-26
  • 2 回答
  • 0 关注
  • 825 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信