2011-08-11 28 views
14

說,我想增加一個計數器,每次我得到一個Ajax響應。我不知道JavaScript異步事件的併發模型。有什麼想法嗎 ?如何在JavaScript中實現原子操作(併發模型)?

+0

請參閱評論[對另一個主題的答案](http://stackoverflow.com/questions/6944748/is-there-an-ie-render-complete-event/6987573#6987573)。實質上,所有腳本都排隊等待執行,並且從來沒有2個腳本同時運行。如果腳本正在執行,則新觸發的腳本(由用戶引起的事件觸發或通過AJAX請求觸發)被放入隊列。因此,沒有併發性可用,所以JavaScript中沒有併發問題。 –

+2

你的意思是沒有兩個腳本同時執行。在你的定義中究竟是什麼作爲腳本的單位? – smartnut007

+0

我想,「腳本」的含義必須是所有已加載的JavaScript部分的整個響應。 – Shavais

回答

17

在瀏覽器中,一次只能運行一個JavaScript線程。

併發問題是可能的,因爲當ajax響應處於掛起狀態時,javascript可能會響應一個不相關的事件而運行。但是如果你在ajax調用之前沒有開始一個旨在原子操作的操作並且在響應處理程序中完成它,那麼你是安全的。

+1

是的。每個事件都是自動處理的。 – JGWeissman