Javascript的setInterval块是否返回函数?

吉姆

我有一个function a()想每10秒执行一次的javascript函数
我发现我可以使用setInterval来做类似的事情:setInverval(a, 10000);
我的问题是以下几点:
这是否意味着
i)每10秒调用一次指定的函数(无论先前的执行是在运行还是以多线程方式运行)或
ii)该函数已被调用,并且该函数完成执行后,该函数的下一次调用被安排在10秒后?
我基本上对选项2感兴趣。如果默认情况下发生了选项1,那么如何实现选项2?

澳洲航空94重型

基本上,setInterval根据选项1运行,除了如果该函数花费的时间超过间隔时间,它将在函数完成并到达下一个刻度之前不会再次被触发。例如,如果您的间隔为1秒,而您的函数需要1.5秒,则它将在2秒的刻度上运行。

如果您想要选项2的行为(在函数完成后X秒钟运行),请setTimeout函数完成时调用

setTimeout(function a() {
    // your own code
    setTimeout(a, 1000);
}, 1000);

它的工作方式是先等待1秒,然后调用传递给的函数setTimeout在函数的末尾,将函数本身(a函数的名称)传递给setTimeout,然后等待一秒钟再次调用该函数。这将一直持续到JavaScript执行停止或使用删除超时为止clearTimeout

请注意,由于JavaScript的单线程性质,即使使用setInterval,该函数也永远不会同时运行。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章