setTimeout(function(){ ... }, 0)
延迟一个函数的调用,让它在下一个事件周期执行。通常我使用这种方法是为了直接操纵事件循环,确保按照特定顺序执行,大多数情况与 UI 有关。
有时我能感觉到 "tick",特别是当我将其用于在元素上运行某些第三方 JS 库时。
但最近我发现了
requestAnimationFrame
。这基本上以更优雅的方式实现了相同的效果。现在我很好奇,是否有任何情况下使用
setTimeout(function(){ ... }, 0)
比 requestAnimationFrame(function(){ ... })
更有利?
requestAnimationFrame
明确表示“在您认为重新渲染/重绘屏幕会很好时执行它”。 - Bergi