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的相关资料
添加回答
举报
0/150
提交
取消