我只是讀了一下成JavaScript走了過來一些代碼,處理加載圖像的過程:同步:onerror的事件和n ++
var n = 0;
...
for (...) {
...
image[i].onload = function { n++; };
}
這是一段代碼的安全,也可以有任何類型訪問變量時的種族n
?
我只是讀了一下成JavaScript走了過來一些代碼,處理加載圖像的過程:同步:onerror的事件和n ++
var n = 0;
...
for (...) {
...
image[i].onload = function { n++; };
}
這是一段代碼的安全,也可以有任何類型訪問變量時的種族n
?
每個圖像的ONLOAD事件發生的時間(相對於彼此,如果一直髮生)通常是非確定性的。考慮瀏覽器緩存或併發下載等問題,或嘗試失敗。
但是,一次只有一個JavaScript「執行上下文」也就是說,n
的最終值將反映ONLOAD處理程序調用(在給定時間)的總次數。也就是說,對於給定的頁面,所有的JS都是原子的,直到它完成爲止(屈服於瀏覽器直到發生事件)
「Web Workers」也適用於此事件模型;線程和變量訪問之間沒有傳統的「競爭條件」。但是,任務之間的任何共享(可變)狀態都可能導致競爭條件,儘管處於較高級別。
這是非常安全的,因爲大多數JavaScript運行在單線程上下文中。唯一的警告是Web Workers,但它們設計得非常好,只能通過JSON消息進行通信。