js的运行机制

发布时间 2023-12-29 00:42:41作者: 前端自信逐梦者

1.单线程

js是单线程的,一个任务执行完才会执行下一个任务

for (let i = 0; i < 2000; i++) {
  console.log(1);
}
setTimeout(() => {
  console.log(2);
}, 0);
setTimeout(() => {
  console.log(3);
}, 0);
setTimeout(() => {
  console.log(4);
}, 0);
console.log(5);
// 会先输出2000个1,然后再输出5 2 3 4

2.process.nextTick 和 setImmediate方法

2.1 process.nextTick方法

process.nextTick方法会在同步任务执行完毕,异步任务执行之前调用

process.nextTick(() => {
  console.log(1);
});
console.log(2);
setTimeout(() => {
  console.log(3);
}, 0);
console.log(4);
// 输出结果2 4 1 3

2.2setImmediate方法

process.nextTick方法会在当前事件循环结束之后调用

setImmediate(() => {
  console.log(1);
});
console.log(2);
setTimeout(() => {
  console.log(3);
}, 0);
console.log(4);
// 输出结果2 4 3 1

事件循环