process.nextTick的问题

想知道nextTick在一秒内的触发频率,下面的代码正确吗

   var fireCount = 0;
  var start = new Date;
  while(new Date - start < 1000){
  process.nextTick(function(){fireCount++;});
 }
 setTimeout(function(){console.log(fireCount);}, 1000);
收藏 0 分享浏览 1611
3年前
跟帖
羽音篠之
3年前

理论上是有点问题,实际上可能没事。

改成这样:

var fireCount = 0;
var start = new Date;
while(new Date - start < 10000) { // 改为远大于 1s 的一个值
    process.nextTick(function(){fireCount++;});
}
setTimeout(function(){console.log(fireCount);}, 1000);

或者改成一个上限的触发次数。

不过这么搞还是有问题……比如内存可能会开爆。

这个结果可能是因机器和操作系统而异的呢,所以没什么意义来着……

沙发
张小俊128
3年前
@羽音篠之 感觉你做的修改有点问题: 1、node的事件循环和单线程会让setTimeout中的回调函数一直无法执行,直到10000毫秒之后while执行完毕; 2、实际看了一下,修改以后10000毫秒的结果和1000毫秒的结果差了很多。
板凳
羽音篠之
3年前
@羽音篠之 @张小俊128 1、你是在测试事件触发的效率,而不是发布代码执行的效率;2、差很多有两种情况(一种是原来的那个没有充分的效率,另一种是我们两个都是错的会停机,后一种可能性比较高)
地板
说几句
广告位 点击查看投放指南

我的收藏