假设我有从返回的超时 IDsetTimeout
or setInterval
.
我可以通过某种方式获得与其关联的原始函数或代码吗?
像这样的东西:
var timer_id = setTimeout(function() {
console.log('Hello Stackoverflowers!');
}, 100000);
var fn = timer_id.get_function(); // desired method
fn(); // output: 'Hello Stackoverflowers!'
你可以在周围放一个包装纸setTimeout
- 我只是把这个放在一起(经过几次迭代测试......)
(function() {
var cache = {};
var _setTimeout = window.setTimeout;
var _clearTimeout = window.clearTimeout;
window.setTimeout = function(fn, delay) {
var id = _setTimeout(function() {
delete cache[id]; // ensure the map is cleared up on completion
fn();
}, delay);
cache[id] = fn;
return id;
}
window.clearTimeout = function(id) {
delete cache[id];
_clearTimeout(id);
}
window.getTimeout = function(id) {
return cache[id];
}
})();
注意:如果您使用字符串作为回调,这将不起作用。但没有人这么做,不是吗……?
它也不支持将 ES5 附加参数传递给回调函数,尽管这很容易支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)