当前位置:  开发笔记 > 编程语言 > 正文

setInterval/setTimeout返回值

如何解决《setInterval/setTimeout返回值》经验,为你挑选了3个好方法。

两个问题:

    如何计算返回的值setIntervalsetTimeout(用于清除计时器的值)?

    这两个函数是否可以在运行时返回相同的值?例如:

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

是否有可能ab具有相同的价值?

第一个问题更多是关于我的知识问题,但第二个更重要.



1> cgp..:

返回一个可用于取消计时器的值.因此,它们似乎不太可能返回相同的值(除非它们重用值并且其中一个定时器已被取消)

Mozilla声明它的DOM级别为0,但不是规范的一部分.(查看页面底部)

我有一个更好的参考:

Nabble说:

SetTimeout和setInterval来自原始的Javascript规范,ECMA之前.该规范在任何地方都没有正式标准化,但它受到所有Web浏览器和Javascript语言的大多数实现的支持.(包括ActionScript.)

ECMA之前的规范通常称为"DOM-0"API.由于它们之前从未被标准化,因此HTML5最终规定未弃用的API以尝试跨浏览器提供一致的环境是有意义的.特别是当最近的事件证明有些公司喜欢实施标准的信,而不是精神.

阅读这里的原始规范,或者从Sun(他是JavaScript的早期代言人)那里阅读.



2> Alex Rozansk..:

在Opera 9,Safari 3,Firefox 3和IE 7下进行了测试.

所有返回的整数值,从1开始,然后每次调用setTimeOut()和递增1 setInterval().但是,我注意到浏览器启动了计数器并以不同方式处理它们:

IE以(看似)随机的6位数字开头,但后续调用任一函数都会增加这个数字.关闭并重新打开IE后,我发现起始编号似乎是随机生成的,因为它与前一个会话的计数相差无几.

Opera为每个选项卡维护了一个计数器 - 关闭一个选项卡并打开一个新选项卡从新选项卡中的1开始计数器.

在Safari中,计数是全局的 - 打开一个新选项卡并在不同选项卡中调用函数似乎增加了一个全局引用计数器.

在Firefox中,计数器似乎从2开始,并在每次后续调用任一函数时递增.与Opera一样,每个标签都有自己的计数器值,但它们似乎都从2开始.

但请注意,在所有方案中,没有两个标识符(至少在同一选项卡中)是相同的.


我希望找出返回的值是否总是真实的,虽然未指定,但似乎是这种情况.感谢您检查所有这些浏览器.

3> Maciej Łebko..:

我认为这不是一种标准化的行为.在firefox中,它只是整数,每次调用setTimeout或递增setInterval.而且,不,他们不能拥有相同的价值.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有