gpt4 book ai didi

Javascript setInterval 状态

转载 作者:行者123 更新时间:2023-11-29 20:01:23 25 4
gpt4 key购买 nike

如果我正在编写包含大量间隔的 javascript,我倾向于在间隔对象数组中跟踪它们

function Interval(id, desc){
this.id = id;
this.desc = desc;
}

prototypes etc....

然后我用类似的东西创建我的区间函数

intervalArray.push(new Interval(setInterval(function, milli),"Demo interval"))   

我知道这有点强制症,但请相信我,它使问题解决变得更容易,因为当您想在运行时对其中一两个进行 clearInterval 时,在开发工具提示符下跟踪这些糟糕的事情会更简单。

所以问题...

给定一个间隔 ID,有什么方法可以访问它的当前状态吗?

也就是说,如果我将间隔 x 设置为每五分钟触发一次 300000 的重复时间,是否有任何方法可以获取 x.timer,一个在一分钟后将返回 60000 的函数?

现在有几次,在调试时,了解给定间隔离触发有多近会很有用。

我想我可以向我的间隔对象添加另一个值 - .lastFired,用 0 启动它并在它触发时用时间戳更新它,但大概浏览器会在某处跟踪间隔......

最佳答案

您可以进一步扩展您的区间函数:

function Interval(fn, desc, ms){
this.desc = desc;
this.status = -1;

var that = this;

this.id = window.setInterval(function () {

// save some progess to the Interval object
// that is used, because in interval callback this === window
that.status++;

// now call your function fn, using this === Interval object
fn.call(that);
}, ms);

this.stop = function () {
if (this.id) {
window.clearInterval(this.id);
this.id = 0;
this.status = -1;
}
};
}

// Usage:
var myInterval = new Interval(function () {
// frequent action

// this === Interval object instance
if (this.status === 5) this.stop();
}, "description", 10000);

现在您还可以创建一个 onprogress 事件处理程序,如回调,以便在您的进度发生变化时得到通知。您还可以将 this.id = window.setInterval(... 语句移动到 this.start = function () { 公共(public)函数中,以便稍后启动和停止。

关于Javascript setInterval 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com