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