据我所知,这两个javascript的行为方式相同:
选项A:
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
Run Code Online (Sandbox Code Playgroud)
选项B:
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
Run Code Online (Sandbox Code Playgroud)
使用setTimeout和setInterval有什么区别吗?
编写JavaScript动画时,您当然会使用setInterval(或重复的setTimeout)进行循环.但是在setInterval/setTimeout调用中使用的最佳延迟是什么?
在.animate()函数的jQuery API页面中,用户"fbogner"说:
如果有人感兴趣:动画是使用setInterval"渲染"的,时间超过13毫秒.这很快!Chrome的最快间隔时间约为10毫秒.所有其他浏览器在20-30ms左右"采样".
知道jQuery如何决定使用这个特定的数字吗?
开始赏金.我希望有了解Chromium或Firefox背后的源代码的人可以提供一些可能支持特定帧速率决策的硬性事实.或者可能是动画(或框架)列表及其延迟.我相信这为进行一些研究提供了一个有趣的机会.
有趣 - 我只是花时间看看谷歌的吃豆人来源,看看他们做了什么.他们设置了一系列可能的FPS(90,45,30),从第一个开始,然后每帧检查帧的"慢度"(帧的数量超过其分配的时间).如果慢度超过50ms 20次,则帧速率下降到列表中的下一个(90 - > 45,45 - > 30).看起来帧速率永远不会提升,大概是因为游戏的寿命很短,所以编码就不值得了.
哦,setInterval延迟当然设置为1000 /帧速率.事实上,它们使用setInterval而不是重复的setTimeouts.
我认为这种动态帧率功能非常整洁!
我环顾四周试图理解如何SetInterval但只找到了如何使用它.我已经知道它的功能,我只是好奇当JS不支持线程时它是如何能够在单独的线程上运行的(至少这是我读过的).
我希望我能正确地提出这个问题.
谢谢.