如何通过 ID 获取间隔或超时
How to get interval or timeout by ID
我想通过它的ID获取一个interval或者timeout的数据。
就像 document.getElementById('id-of-random-element')
将获取该特定元素上的所有数据一样,我想知道是否有任何方法可以获取最初通过其 ID 设置为超时或间隔的数据。
例如:
var a = setInterval(()=>{console.log("abcdef");},1000)
//below is some serious pseudo code
getIntervalById(a) //returns something like (()=>{console.log("abcdef");},1000)
您可能会考虑的一件事是使计时器过载,这样您就可以拦截它们并存储您可能想要的任何内容
带有 setTimeout 的简单示例
const origTime = window.setTimeout;
setTimeout = function(...args) {
const id = origTime(...args);
// do something with arguments and id
console.log('id:', id, 'delay:', args[1]);
return id
}
let id = setTimeout(() => console.log('wtf'), 1000);
setTimeout(() => console.log('foobar'), 2000)
console.log('external id', id)
扩展另一个答案
var inters = []
Object.defineProperties(window, {
getAllIntervals: {
get: function () {
return inters
}
}
})
var old= setInterval
setInterval = function () {
var oldId= old.apply(this, arguments)
inters[oldId] = arguments//[fnc, time]
}
然后,只要你可以设置间隔,你就可以稍后调用 getAllIntervals 来获取我们 lidz 映射的间隔列表,并使用 .toString() 分析函数,或者使用 getAllIntervals[INTERVAL_ID]
[=12= 获取特定间隔]
我想通过它的ID获取一个interval或者timeout的数据。
就像 document.getElementById('id-of-random-element')
将获取该特定元素上的所有数据一样,我想知道是否有任何方法可以获取最初通过其 ID 设置为超时或间隔的数据。
例如:
var a = setInterval(()=>{console.log("abcdef");},1000)
//below is some serious pseudo code
getIntervalById(a) //returns something like (()=>{console.log("abcdef");},1000)
您可能会考虑的一件事是使计时器过载,这样您就可以拦截它们并存储您可能想要的任何内容
带有 setTimeout 的简单示例
const origTime = window.setTimeout;
setTimeout = function(...args) {
const id = origTime(...args);
// do something with arguments and id
console.log('id:', id, 'delay:', args[1]);
return id
}
let id = setTimeout(() => console.log('wtf'), 1000);
setTimeout(() => console.log('foobar'), 2000)
console.log('external id', id)
扩展另一个答案
var inters = []
Object.defineProperties(window, {
getAllIntervals: {
get: function () {
return inters
}
}
})
var old= setInterval
setInterval = function () {
var oldId= old.apply(this, arguments)
inters[oldId] = arguments//[fnc, time]
}
然后,只要你可以设置间隔,你就可以稍后调用 getAllIntervals 来获取我们 lidz 映射的间隔列表,并使用 .toString() 分析函数,或者使用 getAllIntervals[INTERVAL_ID]
[=12= 获取特定间隔]