使用setTimeout模拟setInterval时,用clearTimeout清除多余的调用

使用setTimeout模拟setInterval时,使用clearTimeout清除多余的调用,为什么运动直接停止了?

html:`

https://img1.mukewang.com/5c3eef6a0001c32803260210.jpg

css:

https://img.mukewang.com/5c3eef720001b83701970140.jpg

js:

https://img1.mukewang.com/5c3eef7e000131a203970305.jpg

如果我把setTimeout(startMove,200);放在位置1,那么运动很正常,我不停的点击button,运动也不会变快或者停止。
但是如果我把setTimeout(startMove,200);放在位置2,那在我点击第二次button的时候,运动会直接停止,而且不会再继续运动了。

想请问一下,为什么会发生这种情况?就算我点击了button,前一个setTimeout被清除了,不应该在20毫秒后,又会出现一个新的setTimeout吗?

希望有高手可以解答,非常感谢!


素胚勾勒不出你
浏览 1854回答 1
1回答

千万里不及你

位置2出问题是因为多次点击会导致多次触发setTimeout(startMove,200),然后会在200ms内不断clearTimeout(timer)和给timer赋值setTimeout,导致动画失效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript