SetTimeout奇怪的代码执行

安吉潘迪

我执行Part1Part2Part3Part4分别(在不同的文件)。

我对执行代码疏远了。为什么Part1输出像这样,A B但我期望如此B APart4您能否给出相同确切原因

//Part1
setTimeout(function(){ console.log('A') }, 1);
setTimeout(function(){ console.log('B') }, 0);
Out Put of console: A B

//Part2
setTimeout(function(){ console.log('A') }, 4);
setTimeout(function(){ console.log('B') }, 3);
Out Put of console: B A

//Part3
setTimeout(function(){ console.log('A') }, 3);
setTimeout(function(){ console.log('B') }, 4); 
Out Put of console: A B

//Part4
setTimeout(function(){ console.log('A') }, 2000);
setTimeout(function(){ console.log('B') }, 0);
Out Put of console: B A
马诺·洛迪(Manoj Lodhi)

setTimeout函数的延迟值固定不变,这意味着将忽略0并将其设置为最小值(通常为4ms或10ms,具体取决于浏览器)。此外,如果选项卡处于非活动状态,则超时可能会进一步延迟。

但是,当您提供setTimeout值1时,它将在1毫秒后调用它。Javascript不会忽略其中的值1,setTimeout但可以忽略0。

postMessage是代替setTimeout0的最佳使用方法

当您使用这种微小的时间差(一个值是零)时,还有一件事情,然后有时它会根据它们在代码中的顺序执行该函数。

为了进行检查,您可以将setTimeout值0放在setTimeout值1函数之前它将setTimeout首先运行值0,然后运行setTimeout值1。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章