我有一个自定义的setInterval函数,可以在运行时修改间隔。我希望能够返回调用者以后可以修改的变量。类似于clearInterval()的工作方式。
自定义设置间隔功能
customSetInterval(callback, interval) {
let stop = false;
this.startInterval(callback, interval, stop);
return stop;
}
startInterval(callback, interval, stop) {
if (stop) {
return;
}
setTimeout(() => {
callback();
interval += 100;
this.startInterval(callback, interval, stop);
}, interval);
}
我当前的实现无效,因为我只是返回值。不是变量本身。可以在JS中做类似的事情吗?
执行示例
let stop = this.devicewise.customSetInterval(() => {
console.log('HELLO!');
}, 1000);
setTimeout(() => {
console.log('stopping!');
stop = true;
}, 5000);
如果这不可能,我计划创建一个每次启动时都会添加到的布尔哈希图。然后创建一个customClearInterval函数来修改该哈希图。
答案 0 :(得分:0)
似乎您想通过回调一次性执行,也许是这样的:
class CustomInterval {
constructor() {
this.id = -1;
}
start(callback, interval) {
console.log(`executing callback in ${interval}ms`);
this.id = setTimeout(() => {
callback();
console.log('callback fired');
}, interval);
}
stop() {
clearTimeout(this.id);
console.log('stopped');
}
}
// ...
let j = new CustomInterval();
j.start(() => {
// do stuff here
}, 5000);
// after some other operations, you decided to cancel the above delayed execution
// no problem.
j.stop();