javascript - 我可以检索在某个时间间隔内运行的函数吗?

标签 javascript

setInterval 运行匿名函数。

给定间隔 ID,我可以检索函数体吗?

对于那些好奇的人,我直接在浏览器控制台中编写了一个半复杂的函数,并开始了一个间隔。我因为关闭了 Firefox 检查器而丢失了控制台历史记录,并且想省去重写函数的精力。按“向上”,不再返回我以前的条目。

最佳答案

不,您无法从计时器 ID 检索该函数。

如果你想定期做这样的事情,那么重新定义setInterval来捕获函数:

(function() {
    var oldSetInterval = setInterval;        // remember the original setInterval

    setInterval = function(fn, msec) {       // redefine setInterval
        var id = oldSetInterval(fn, msec);   // call the real one
        setInterval.fns[id] = fn;            // remember the fn in an array
        return id;
    };

    setInterval.fns = [];                    // array attached to our setInterval
                                             // remembers functions by timer ID
}());

使用如下:

var myId = setInterval(function() { alarm(); }, 300000);
alert(setInterval.fns[myId])); // "function() { alarm(); }"

关于javascript - 我可以检索在某个时间间隔内运行的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324097/

相关文章:

javascript - 如何在客户端应用程序中使用 Django 模型进行验证和表单生成?

javascript - javascript 对象中的购物车,带有 json 对象数量的数组

javascript - 将对象数组拆分为数据和标签

javascript - Jquery ScrollTop 操作

javascript - 在 JavaScript 数组中存储相同的键和不同的值并与键值对匹配

javascript正则表达式字符串替换只能工作一次

javascript - 如果另一个元素等于某个文本,则更改具有相同类的每个 div 元素的颜色

javascript - jQuery:如果标签存在于自身之上,则将样式添加到标签

javascript - 如何将 view locals in action as machine 配置

javascript - Webpack 4,如何将一个模块导入另一个都是入口点的模块?