两个问题:

  1. 是怎样的价值回来 setIntervalsetTimeout (那些用于清除的计时器)计算出来的?

  2. 是否有可能为这两种功能的返回相同的价值在运行时?例如:

    var a = setInterval(fn1, 1000);
    var b = setTimeout(fn2, 1000);

它是可能的 ab 具有同样的价值?

第一个是更多的对-我知的问题,但第二个是更为重要。

有帮助吗?

解决方案

返回的价值,它可能用于取消时。 因此,它似乎不可能的,他们返回同一个值(除非他们都是再利用的价值观和一个计时器已经被取消)

Mozilla国DOM level0,但没有说明书的一部分。 (看看底部的网页)

我已经有了一个更好的参考:

Nabble 说:

目和若第一是从 原Javascript规范, 预先通信机制详解.这一规范是不是 正式的标准化的任何地方,但是 它支持所有网络浏览器 和大多数实现的 Javascript的语言。(包括 脚本。)

预先通信机制详解规格的往往是被称为 的"DOM-0"Api。因为他们有 从来没有标准化之前, 有意义的对HTML5最后规范 非deprecated Api在尝试 提供一个一致的环境 跨浏览器。尤其是当 最近的事件证明,没有 是公司的人喜欢实施 该信的标准,但不是 精神。

阅读原始规格 在这里,, 或者从 太阳 (他是一个早背书人的JavaScript)。

其他提示

测试了这个在歌剧9,Safari3,火狐3和即7.

所有返回的整数值,从1开始,然后增加1对每个呼叫 setTimeOut()setInterval().然而,我注意到,浏览器开始计数器以及处理它们是不同的:

  • 即开始与一个(似乎)随机的6位数字,但随后调任一职能增加这个数目。之后关闭和重新开放,即我发现这个起始数字似乎是随机产生的,因为它无处可靠近数从上一届会议。
  • 歌剧院维持一个反对每一项关闭一个标签,打开一个新的开始计数从1中的新标签。
  • 在野生动物园,该计数是全球性的-打开一个新的标签和调职能不同的标签,似乎增加一个全球参考计数器。
  • 在火狐,柜台现在开始2,加上随后的每个叫到的功能。喜欢歌剧,每一个选项都有自己的反价值,但他们似乎都开始在2.

注意到虽然,在所有情况下,没有两个标识符(至少在相同的标签)是相同的。

我认为这不是一个标准的行为。在火狐,这只是整数,增加在每个呼叫的 setTimeoutsetInterval.而且,不,他们不能有同样的价值。

从Mozilla网站:

intervalID是一个独特的间隔ID可以通过向clearInterval().

因此,它是独一无二的:)

他们是否能够有同样的价值取决于JavaScript执行情况。作为Maciej中提到的火狐,他们不能有同样的价值作为同一个计数器被使用。然而,可能不同于其他浏览器,所以它也许是最好不要依赖他们永远不会具有同样的价值。

它听起来到我的返回值的指数值为任何内部维护的列表的计时器/时间间隔,他们都保留。

在一点上,我叫clearInterval(18)而不是clearInterval(var_returned_from_set)和停止所需的时/时间间隔。(测试FF17.0.1IE9。0.8)

也在我自己的测试,他们似乎是唯一的生命周期内的页面的浏览器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top