JavaScript中的setInterval和clearInterval作为单线程语言

时间:2015-04-13 18:31:03

标签: javascript setinterval clearinterval single-threaded

我在理解setIntervalclearInterval在JavaScript中的工作方式时遇到了问题。

我已经阅读了关于这两个功能的不同文章,但我仍然感到困惑。

鉴于JavaScript是single thread,当我们调用test=setInterval(function(){}, t)时,我们将安排我们的函数每t毫秒执行一次。除非我们clearInterval(test)

  • 这是什么意思?这是否意味着clearInterval我们cancle已经在JavaScript队列中的setInterval
  • 如果我们setInterval多次但clearInterval只会发生一次会怎么样?
  • 我们clearInterval可以setInterval吗?
  • JavaScript如何处理预定的流程?

2 个答案:

答案 0 :(得分:2)

  

这是什么意思?这是否意味着通过clearInterval我们可以使用   setInterval已经在JavaScript的队列中了?

  

如果我们setInterval多次但clearInterval会发生什么   只有一次?

每个setInterval都会返回一个句柄,您可以使用clearInterval来停止该特定计时器。每个计时器都是单独处理的。

  

我们可以在setInterval中使用clearInterval吗?

  

JavaScript如何处理预定的流程?

非常像其他任何活动。以一定间隔触发事件,事件处理程序调用您指定的回调函数。如果某个脚本在触发事件时正在运行,那么当控件返回到浏览器时将处理该事件。

答案 1 :(得分:1)

每个setInterval调用returns一个唯一值,当传递到clearInterval时,会停止返回该值的setInterval的特定调用。

因此,在您的示例中,调用test时返回的setInterval与另一个setIntervalsetTimeout调用返回的值不同。因此,在执行clearInterval(test);时,只有返回test的调用将在间隔时间内停止运行。