当前位置: 首页 > 网络应用技术

JS中的setTimeout和setInterval

时间:2023-03-08 19:17:17 网络应用技术

  由于JavaScript是异步的,因此该函数可用于使用并计划执行功能。

  注意:定时处理不是Ecmascript的标准,而是在DOM中实现的。

  当它被调用时,它将返回一个ID徽标,并计划在将来大约1000毫秒后调用该功能。该函数仅执行一次。

  基于JavaScript引擎的计时策略和基本单线操作方法,其他代码的操作可能会阻止此线程。因此,无法确保在指定时刻调用该功能。

  作为第一个参数函数,它将在全局范围中执行,因此该函数将指向此全局对象。

  注意:第一个参数是函数对象。一个普遍的错误就是这样。这里回调函数的返回值不是本身。在大多数情况下,这是一个潜在的错误,因为如果函数返回,则不会报告错误。

  它仅执行一次回调函数,但是如名称所建议的 - 它将每毫秒执行一次函数。但是不鼓励此函数。

  当执行回调函数被阻止时,仍会发出更多的回调指令。在一小时的时间内,这将导致回调函数堆积。

  在上面的代码中,将执行并阻止一秒钟。

  被阻止时,将来仍将组织回调函数调用。因此,当第一个函数调用结束后,已经有10个函数调用等待执行。

  最简单,最简单的解决方案是在回调功能中使用功能。

  这不仅封装了回调函数,而且还可以防止呼叫指令的积累,这些指令可以具有更多的控制。功能现在可以控制是否继续执行还是终止执行。

  可以通过将定时ID标识符传递给或功能来清除。至于使用哪个函数,它取决于调用。

  由于没有构建的方法来删除所有计时器,因此可以使用暴力来实现这一目标。

  某些计时器可能不会在上面的代码中清除(如果计时器调用大于100时返回的ID值,我们可以预先保存所有计时器ID,然后将其删除。

  并接受第一个参数作为字符串。该功能绝对不使用,因为它在内部使用。

  注意:由于计时器函数不是ecmascript的标准,因此如何分析不同JavaScript引擎中的字符串参数。

  由于在这种情况下未直接调用它,因此将传递给字符串的字符串将从全局范围执行;因此,上述回调函数不用于在动作范围中定义局部变量。

  建议在调用计时器函数时不要使用字符串表格将参数传递给回调函数。

  注意:尽管也可以使用此语法,但不建议这样做,因为使用对象的属性方法时可能是错误的。

  切勿使用字符串作为或第一个参数,因此编写的代码显然很差。当需要将参数传输到回调函数时,您可以创建一个匿名函数来在函数中执行真实的回调函数。

  此外,应该避免使用它,因为其定时执行不会被JavaScript阻止。