Javascript 是否';clearInterval';是否执行清除前传入的函数/Id?
我有一段代码,但我不明白它是如何工作的。我的目标是Javascript 是否';clearInterval';是否执行清除前传入的函数/Id?,javascript,mobx,Javascript,Mobx,我有一段代码,但我不明白它是如何工作的。我的目标是 触发一个每.25秒递增10的函数(startLoadingProgress) 如果此操作持续5秒,请取消间隔 如果需要,可以在5秒钟之前手动取消间隔(finishLoadingProgress) 这就是我想到的。请注意,我使用的是MobX,但这不应影响我尝试执行的操作的可读性 intervalId: number = 0; timer(): any { return setInterval(() => { r
- 触发一个每.25秒递增10的函数(
)startLoadingProgress
- 如果此操作持续5秒,请取消间隔
- 如果需要,可以在5秒钟之前手动取消间隔(
)finishLoadingProgress
intervalId: number = 0;
timer(): any {
return setInterval(() => {
runInAction(() => {
this.loadingProgress += 10;
});
}, 250);
}
@action startLoadingProgress = () => {
this.intervalId = this.timer();
setTimeout(() => {
clearInterval(this.intervalId);
}, 5000);
};
@action finishLoadingProgress = () => {
this.loadingProgress = 100;
clearInterval(this.intervalId);
};
我不明白为什么
clearInterval(this.intervalId)代码>触发我的定时器()
函数。我正在用this.intervalId=this.timer()分配一个id
但是为什么当传递到clearInterval
时,此id引用的函数会触发?(我已经用console.log
语句检查过了)我怀疑有什么东西在多次调用startingprogress()
。第二次调用将启动一个新的计时器并替换此。使用此计时器进行intervalId,但第一个计时器将继续运行。启动新计时器时,应取消上一个计时器
@action startLoadingProgress = () => {
clearInterval(this.intervalId);
this.intervalId = this.timer();
setTimeout(() => {
clearInterval(this.intervalId);
}, 5000);
};
您可能还需要重置此项。同时将进度加载到0
。clearInterval()
不会触发计时器回调。不直接相关,但您可能需要稍微调整数字。5000/250=20和100/20=5您的描述不太清楚。。。你怎么知道clearInterval调用了你的函数?这个函数显然是由timer()
方法调用的,在250ms之后,您如何调用所有这些代码?问题可能出在调用代码中。