若第/目的回报的价值
-
06-09-2019 - |
题
两个问题:
是怎样的价值回来
setInterval
和setTimeout
(那些用于清除的计时器)计算出来的?是否有可能为这两种功能的返回相同的价值在运行时?例如:
var a = setInterval(fn1, 1000);
var b = setTimeout(fn2, 1000);
它是可能的 a
和 b
具有同样的价值?
第一个是更多的对-我知的问题,但第二个是更为重要。
解决方案
返回的价值,它可能用于取消时。 因此,它似乎不可能的,他们返回同一个值(除非他们都是再利用的价值观和一个计时器已经被取消)
Mozilla国DOM level0,但没有说明书的一部分。 (看看底部的网页)
我已经有了一个更好的参考:
Nabble 说:
目和若第一是从 原Javascript规范, 预先通信机制详解.这一规范是不是 正式的标准化的任何地方,但是 它支持所有网络浏览器 和大多数实现的 Javascript的语言。(包括 脚本。)
预先通信机制详解规格的往往是被称为 的"DOM-0"Api。因为他们有 从来没有标准化之前, 有意义的对HTML5最后规范 非deprecated Api在尝试 提供一个一致的环境 跨浏览器。尤其是当 最近的事件证明,没有 是公司的人喜欢实施 该信的标准,但不是 精神。
其他提示
测试了这个在歌剧9,Safari3,火狐3和即7.
所有返回的整数值,从1开始,然后增加1对每个呼叫 setTimeOut()
和 setInterval()
.然而,我注意到,浏览器开始计数器以及处理它们是不同的:
- 即开始与一个(似乎)随机的6位数字,但随后调任一职能增加这个数目。之后关闭和重新开放,即我发现这个起始数字似乎是随机产生的,因为它无处可靠近数从上一届会议。
- 歌剧院维持一个反对每一项关闭一个标签,打开一个新的开始计数从1中的新标签。
- 在野生动物园,该计数是全球性的-打开一个新的标签和调职能不同的标签,似乎增加一个全球参考计数器。
- 在火狐,柜台现在开始2,加上随后的每个叫到的功能。喜欢歌剧,每一个选项都有自己的反价值,但他们似乎都开始在2.
注意到虽然,在所有情况下,没有两个标识符(至少在相同的标签)是相同的。
我认为这不是一个标准的行为。在火狐,这只是整数,增加在每个呼叫的 setTimeout
或 setInterval
.而且,不,他们不能有同样的价值。
从Mozilla网站:
intervalID是一个独特的间隔ID可以通过向clearInterval().
因此,它是独一无二的:)
他们是否能够有同样的价值取决于JavaScript执行情况。作为Maciej中提到的火狐,他们不能有同样的价值作为同一个计数器被使用。然而,可能不同于其他浏览器,所以它也许是最好不要依赖他们永远不会具有同样的价值。
它听起来到我的返回值的指数值为任何内部维护的列表的计时器/时间间隔,他们都保留。
在一点上,我叫clearInterval(18)而不是clearInterval(var_returned_from_set)和停止所需的时/时间间隔。(测试FF17.0.1IE9。0.8)
也在我自己的测试,他们似乎是唯一的生命周期内的页面的浏览器。