有關於這一主題的堆棧溢出了一些問題,但我仍然不清楚:我可以保證所有監聽者在派發事件後都在下一行執行嗎?
我知道動畫引擎是單線程的,所以當它接收到一個事件,它本質上斷絕,執行任何註冊事件偵聽器(沒有保證順序),然後返回到當前範圍?
如果我有這樣的代碼:
addListener("stuff", function():void {
// some stuff
});
addListener("stuff", someFunc);
dispatch(new Event("stuff"));
trace("Done.");
我想知道:
我可以保證兩個聽衆都被我到達跟蹤(「完成」)時執行;一行?
編輯:
或
可我保證之前的任何事件偵聽器執行當前的函數將完成?即trace(「完成」);將始終執行。
或
也沒有。
這是我本來以爲它的工作。檢查我更新的問題。 – timoxley 2009-12-16 00:32:14
顯然,你的模型只能用這種方式來處理外部事件。由於我的功能是調度事件本身,所以偵聽器總是直接執行。 「如果一些外部事件被觸發......那麼我不相信該事件將被處理,直到當前例程完成。如果foo()本身觸發了一個事件,那麼流程將按照您所描述的完全進行 - 事件是立即在單一(主)線程上處理。「 - http://stackoverflow.com/questions/1267685/does-dispatching-an-event-interrupt-a-function – timoxley 2009-12-17 00:27:40