【发布时间】:2020-03-15 12:15:15
【问题描述】:
您好互联网的强大人士:)
在玩一些 JS 时,我注意到我无法在 clearInterval(var) 中使用 setInterval(function, milliseconds) 的返回值。
这是一个清除间隔的工作版本:
const intervalId = setInterval(() => foo(), 500);
setTimeout(() => clearInterval(intervalId), 2000);
在此示例中,间隔每 500 毫秒调用一次方法 foo()。 2s 后,这将被嵌套在 setTimeout(function, milliseconds) 中的 clearInterval(intervalId) 停止。
不工作是在 clearInterval 内使用 setInterval:
setTimeout(() => clearInterval(setInterval(() => foo(), 500)), 2000);
- (注意:将箭头函数语法替换为普通函数调用不会改变结果)
与上例不同,这里没有使用变量来保存setInterval()的返回值。
然而它导致区间从未被调用/立即停止。
这对我来说似乎很奇怪(并且可能是一个错误?)。
有人可以给出意见/解释吗?
谢谢 :)
【问题讨论】:
-
在
setTimeout触发之前什么都不会发生,这意味着直到那时setInterval才会被调用,而clearInterval()会立即被调用。 -
哦,是的,这是最大的不同,完全没有注意到!
标签: javascript variables setinterval clearinterval