課程
/前端開發
/JavaScript
/JS動畫效果
代碼如下:
if?(iTarget?==?icur)?{ if(fn){fn();} clearInterval(obj.timer); }
2017-08-03
源自:JS動畫效果 5-1
正在回答
因為如果這樣先判斷有fn()方法時,會先執行調用fn()方法然后執行clearintval(),但是這時候瀏覽器并不會等到fn()方法執行完才去調用clearintval().它會直接清除fn()內的定時器。正好老師下節課會講到同時調用兩個?startMove()方法時會遇到的問題,這時只會執行第二個startMove()方法而不會一個一個調用也不會同時調用,原因就是第一個startMove()方法還沒執行完第二個startMove()里的clearintval()就把第一個startMove()計時器清除了。這和你問的問題應該是同一個道理吧。個人理解,適當參考。
舉報
通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝
1 回答if(flag){clearInterval(obj.timer);if(fn){fn()}}
1 回答鏈式運動調用fn的時候,為什么clearInterval(timer)必須在if(fn){fn();}這段代碼之前。放在后面就不起作用了。
4 回答我認為最終的fn不會執行。
2 回答為什么fn后面要加括號?
1 回答flag放到定時器外面為什么fn就沒法執行了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-08-07
因為如果這樣先判斷有fn()方法時,會先執行調用fn()方法然后執行clearintval(),但是這時候瀏覽器并不會等到fn()方法執行完才去調用clearintval().它會直接清除fn()內的定時器。正好老師下節課會講到同時調用兩個?startMove()方法時會遇到的問題,這時只會執行第二個startMove()方法而不會一個一個調用也不會同時調用,原因就是第一個startMove()方法還沒執行完第二個startMove()里的clearintval()就把第一個startMove()計時器清除了。這和你問的問題應該是同一個道理吧。個人理解,適當參考。