定时器的nexttick差异分析()和()setimmediateNode.js
嗯,节点中的定时器就是这么说的。
2。看代码:
复制代码代码如下所示:
process.nexttick(函数(){()
console.log(延迟执行);
});
console.log(正常执行1);
console.log(正常执行2);
console.log(正常执行3);
console.log(正常执行4);
在这个例子中,我认为,很明显,你可以看到什么是nexttick()。它主要用于异步执行。
看代码:
复制代码代码如下所示:
setimmediate(函数(){()
console.log(延迟执行);
});
console.log(正常执行);
我们发现,也setimmediate是异步执行。
因此,nexttick之间的区别是什么()
看代码:
代码1:
复制代码代码如下所示:
process.nexttick(函数(){()
console.log(nexttick延迟)
});
setimmediate(函数(){()
console.log(setimmediate延迟);
});
console.log(正常执行);
结果:
代码的两:
复制代码代码如下所示:
setimmediate(函数(){()
console.log(setimmediate延迟);
});
process.nexttick(函数(){()
console.log(nexttick延迟)
});
console.log(正常执行);
结果:
发现代码顺序不一样,但结果是一样的。
结果可以从结果中找到:
的nexttick()回调函数执行比setimmediate较高优先级();
process.nexttick()属于闲置的观测器,setimmediate()属于检查观察。在每一轮循环检查中,空闲的观察员先于I/O观察员,I/O观察员先于检查观察员。
在具体的实现,对process.nexttick回调函数()是存储在一个数组,
对setimmediate结果()存储在链表。
在行为上,process.nexttick()执行所有的回调函数在每一轮周期阵列。
和setimmediate()回调函数在链表中每一轮循环执行。
复制代码代码如下所示:
2(nexttick) / /添加回调函数
process.nexttick(函数(){()
console.log(nexttick延迟执行1);
});
process.nexttick(函数(){()
console.log(nexttick延迟执行2);
});
两(setimmediate) / /添加回调函数
setimmediate(函数(){()
console.log(setimmediate延迟执行1);
process.nexttick(函数(){()
console.log(强插);
});
});
setimmediate(函数(){()
console.log(setimmediate延迟执行2);
});
console.log(正常执行);
从实施效果看:当第一(setimmediate)的回调函数执行后,并没有立即执行第二,但进入第二轮,再由nextTick()()setimmediate优先,执行命令后。这种设计的原因是确保每一个循环都能更快地完成。防止过多CPU和阻塞I/O调用。
这是关于定时器nexttick差异的信息()和()的setimmediate Node.js。这些人知道他们之间的区别吗