我希望以下代码<div class=web>
<a href="https://web1.com/"><img src="https://www.google.com/s2/favicons?domain=web1.com">WEB1.com</a>
<a href="https://web2.com/"><img src="https://www.google.com/s2/favicons?domain=web2.com">WEB2.com</a>
...
</div>
在setInterval
之前运行100次。
setTimeout
但其结果是:
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
无法理解的内容?我认为最后setInterval
和setInterval
应该在最后一起运行。
答案 0 :(得分:1)
所有预定代码都放在一个队列中并由一个线程处理。如果setInterval
函数的完成速度不能超过10毫秒,则执行时间将落后于计划。无法保证准确的执行时间。
答案 1 :(得分:1)
setTimeout
和{{1}}没有执行/调度保证,并且最多间隔10毫秒几乎总是会失败。您可以在浏览器上以可预测的间隔获得的最佳效果是duplicated
。这通常会匹配屏幕的刷新率,因此通常为60.6Hz的16.66ms间隔。请记住,这仍然会丢帧,如果标签未对焦,它可能会被暂停。
答案 2 :(得分:0)
可能因为#include <stdio.h>
#include <string.h>
int main (void)
{
char abcd[] = "abcd";
char bc[3] = "";
strncpy(bc, abcd + 1, 2);
puts(bc);
}
这是一个完美的I / O操作需要超过process.stdout.write
。
10ms
正在等待该功能完成,然后开始另一个。