Jim*_*Jim 2 html javascript browser jquery
我有一个javascript函数function a()
,我希望每10秒执行一次.
我发现我可以使用它setInterval
以便我可以执行setInverval(a, 10000);
以下操作:我的问题如下:
这是否意味着
i)每隔10秒调用指定的函数(无论先前的执行是否正在运行/多线程方式)或
ii)该函数被调用,当该函数完成执行后,该函数的下一次调用是在10秒后安排的?
我基本上对选项2感兴趣.如果选项1是默认情况下发生的事情那么我怎么能实现选项2?
基本上,setInterval
根据选项1运行,除非如果函数占用的时间超过间隔时间,则在完成并到达下一个滴答之前不会再次触发.例如,如果您的间隔为1秒,而您的函数需要1.5秒,则它将在2秒钟的时间内运行.
如果你想要选项2的行为(在函数完成后运行X秒),请setTimeout
在函数完成时调用:
setTimeout(function a() {
// your own code
setTimeout(a, 1000);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
这是如何工作的,它首先等待1秒,然后调用传递给的函数setTimeout
.在函数结束时,函数本身(a
是函数的名称)被传递给setTimeout
,然后等待另一秒再次调用函数.这将一直持续到JavaScript执行暂停或使用删除超时clearTimeout
.
请注意,即使您使用setInterval
,由于JavaScript的单线程特性,该函数也永远不会同时运行.