问答详情
源自:5-1 JS链式动画

把JS里面的clearInterval(obj.timer)与fn()顺序对调后会无法执行fn()是为什么?

代码如下:

if (iTarget == icur) {
if(fn){fn();}
clearInterval(obj.timer);
}


提问者:慕斯6506489 2017-08-03 23:52

个回答

  • 为彭十七加油oO
    2017-08-07 16:17:06
    已采纳

    因为如果这样先判断有fn()方法时,会先执行调用fn()方法然后执行clearintval(),但是这时候浏览器并不会等到fn()方法执行完才去调用clearintval().它会直接清除fn()内的定时器。正好老师下节课会讲到同时调用两个 startMove()方法时会遇到的问题,这时只会执行第二个startMove()方法而不会一个一个调用也不会同时调用,原因就是第一个startMove()方法还没执行完第二个startMove()里的clearintval()就把第一个startMove()计时器清除了。这和你问的问题应该是同一个道理吧。个人理解,适当参考。http://img.mukewang.com/598821e60001322119200930.jpg