var clearId:int = setTimeout(function():void{
//some code here
clearTimeout(clearId);
},2000);
這是有效的AS3嗎?任何人都會看到問題嗎?setTimeout,clearTimeout in closure
var clearId:int = setTimeout(function():void{
//some code here
clearTimeout(clearId);
},2000);
這是有效的AS3嗎?任何人都會看到問題嗎?setTimeout,clearTimeout in closure
雖然這編譯沒有警告或錯誤,並且是有效的AS3,有聯合國需要的代碼。
setTimeout函數只運行一次函數。
另一方面,setInterval函數以指定的間隔運行函數,直到調用clearInterval。
clearTimeout用於停止已發生的超時事件。 由於超時只發生一次,因此無需在超時功能中將其清除。 如果您使用的是setInterval,那麼當不再需要調用該函數時,您需要clearInterval。
它有效嗎?是的。
它工作嗎?是的。
它有什麼意義嗎?編號
超時只執行一次。只有在超時已經完成後才能調用閉包。現在,如果您使用的是區間,那麼這是有道理的。
該方法的工作原理是因爲編譯器預先定義了所有這些局部變量,使它們可以自動訪問。基本上,它是這樣的:
var clearId:int;
clearId = setInterval(function():void
{
clearInterval(clearId);
}, 2000);
如果將setTimeout與函數一起使用而不是如下所示的閉包,將需要調用clearTimeout: setTimeout(someFunction,2000); –
Ahum ...「setTimeout函數只運行一次函數。」 所以不,它不會被要求,因爲它只運行一次。 – Creynders
那麼clearTimeout只需要在觸發前停止一些事情呢? –