2009-08-28 62 views

回答

4

的setTimeout(閉合,0)是創建一個新的事件堆棧。如果此解決方案不適合您,我不明白您的目標。你試圖完成什麼目標?

Flex有ENTER_FRAME事件,定時器,使用callLater,setTimeout的,setInterval的,所有這些延遲調用,並創建新的執行堆棧。

你是不是想將代碼注入當前棧?如果是這樣,你可能需要看看這樣的:http://en.wikipedia.org/wiki/Active_object。這個想法是你將函數(閉包)推入數組中,並且當前一個運行完成時,活動對象控制器將下一個從列表中拉出。這是最簡單的情況。您可以編寫一個更復雜的程序,使用您自己的日程管理系統來設置高,中,低優先級堆棧。 (例如,在等待時間過長後得到提升)。

但是,嘿!細節決定成敗。目標是什麼?

+0

謝謝 - 我會研究你提到的功能。 目標基本上是爲了讓我的意圖(「我想推動一個閉包到執行堆棧,所以它將在當前事件處理程序完成後執行一些不確定的時間」)在代碼中清除,setTimeout( ...,0)「並不覺得它讓事情變得非常清晰(當然,除非你對setTimeout的內部工作有所瞭解)。 – 2009-09-04 14:01:39

+0

好吧,所以callLater不是我正在尋找的東西...但它可能是我會得到的最好的,謝謝。 – 2009-09-04 14:05:26

+0

不要討厭setTimeout。自JavaScript早期開始就已經存在。但是如果你需要它來實現任意的延遲,那麼你的設計可能有問題。我從來沒有發現callLater所有可靠的「等待」。至少在setTimout中,你知道你等待了多久,即使它是黑客。 – Glenn 2009-09-04 21:48:41