2016-11-08 91 views
-1

我在一個回調函數中執行一些非常重要的操作,並且在從外部引發任何其他調用之前結束回調非常重要,因此不會中斷。問題是:我保證我的回調函數能夠在沒有任何中斷的情況下執行到最後,或者由於節點的異步性質,回調可以被中斷,從而可以解決外部呼叫,並在此之後恢復?功能/回調執行是否可以被外部呼叫中斷?

+0

你的回調會觸發,除非你在退出頁面之前......這是你的意思嗎? – Mart

+1

不,不能中斷當前正在運行或運行的代碼(除了殺死進程)。但是請注意,如果您的超級重要代碼執行任何異步操作,那麼在所有回調之間可能會發生其他情況(很可能),但應該在之後繼續。 –

+0

@KevinB謝謝,那就是我一直在尋找的。 – cuvidk

回答

1

ECMAScript運行時是一個單線程執行環境。雖然操作可能發生在運行時主機的其他線程中,但當前正在運行的調用堆棧必須先終止,然後才能啓動其他操作。回調函數被放入一個事件隊列中(由主機管理),等待這個調用堆棧處於空閒狀態。發生這種情況時,將執行隊列中的下一個回調。