我执行Part1
,Part2
,Part3
并Part4
分别(在不同的文件)。
我对执行代码疏远了。为什么Part1
输出像这样,A
B
但我期望如此B
A
。像Part4
。您能否给出相同的确切原因。
//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
该setTimeout
函数的延迟值固定不变,这意味着将忽略0并将其设置为最小值(通常为4ms或10ms,具体取决于浏览器)。此外,如果选项卡处于非活动状态,则超时可能会进一步延迟。
但是,当您提供setTimeout
值1时,它将在1毫秒后调用它。Javascript不会忽略其中的值1,setTimeout
但可以忽略0。
postMessage
是代替setTimeout
0的最佳使用方法。
当您使用这种微小的时间差(一个值是零)时,还有一件事情,然后有时它会根据它们在代码中的顺序执行该函数。
为了进行检查,您可以将setTimeout
值0放在setTimeout
值1函数之前。它将setTimeout
首先运行值0,然后运行setTimeout
值1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句