有偿请教,请问 JS 中怎么获取 Timer 的所有事件

2019 年 6 月 20 日
 magicwu

如题,有人知道吗? 当时的代码写的有点问题,是这样写的 setInterval(function(){ doSomething() },1000601);

没有保存返回值,而这段代码在前端,现在没办法更新,只能通过后端来更改。

现在有办法取消这个定时器的执行吗? Window 中有没有函数可以获取所有的事件?

先谢过了!如能解决,发红包!

2791 次点击
所在节点    问与答
14 条回复
xxx749
2019 年 6 月 20 日
这个函数返回的是定时器 ID ( int ),你可以从 0 开始遍历一遍来取消,当然也会取消掉其他的定时器
magicwu
2019 年 6 月 20 日
@xxx749 谢谢回复,但好像不行,页面上有很多定时器,试了一下,每次的定时器 id 还不一样
rabbbit
2019 年 6 月 20 日
而这段代码在前端,现在没办法更新,只能通过后端来更改。 <-- 没看懂,这里的后端指得是啥? 只有编译过的 js 代码,找不着 setInterval 的位置了?
Yvette
2019 年 6 月 20 日
hoyixi
2019 年 6 月 20 日
看不懂问题啥意思,本来以为自己看懂了,然后看了楼主 2 楼回复,更不懂了
westoy
2019 年 6 月 20 日
能插开头的话, 重写下 setInterval?
morethansean
2019 年 6 月 20 日
拦截一下 setInterval 不行吗?
magicwu
2019 年 6 月 21 日
@morethansean 想拦截,但不知道怎么拦
magicwu
2019 年 6 月 21 日
@Yvette 看了一下代码,他应该是把原来的 interval 改写了,所以。。。
magicwu
2019 年 6 月 21 日
@westoy 不能插在开头。。。
lingyi95
2019 年 6 月 21 日
只能通过后端来改?不明白
lingyi95
2019 年 6 月 21 日
重写方法,跟把这段源码注释有区别吗
Tony8Finet
2019 年 6 月 23 日
参考一下这个模组做法,看是否可用 async_hooks 来拦截:
github.com/mafintosh/why-is-node-running
magicwu
2019 年 6 月 30 日
@lingyi95 嗯, 是的,有两个定时,比较慢执行,重写可以。但一个定时,比较快。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575966

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX