【发布时间】:2018-03-09 20:51:52
【问题描述】:
我希望下面的代码 setInterval 在 setTimeout 之前运行 100 次。
var current = 0;
var timer = setInterval(function(){
process.stdout.write(current.toString() + '\n');
if(current === 1000) {
clearInterval(timer);
process.stdout.write('Done');
}
current += 10;
}, 10);
setTimeout(function(){
process.stdout.write('This is 1000.\n');
}, 1000);
但它的结果:
860
870
880
This is 1000.
890
900
910
920
930
940
950
960
970
980
990
1000
Done
我对@987654325@ 有什么不明白的地方?我认为最后一个setInterval 和setTimeout 应该在最后一起运行。
【问题讨论】:
-
setInterval 可能会尽力在您设置的时间执行,但由于您在间隔内运行代码,因此不能保证它会每 10 毫秒执行一次,因为它也需要一些小的时间运行代码的时间。 JS 不是实时语言。您可以预期脚本执行时间会有所不同,具体取决于硬件/浏览器和您机器上的当前负载
-
所有的答案和重复的问题都不回答这个问题! nodejs 的队列应该比 10ms 快得多,并且 nodejs 从来没有说它会把间隔提高到 10ms(浏览器明确声明是 4ms 或 IIRC)
标签: node.js