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

2019-06-20 20:12:39 +08:00
 magicwu

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

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

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

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

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

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

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

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

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

© 2021 V2EX