是的,我知道,要求在Javascript正式的內存模型是一個沒有希望的事業,所以我妥協,「所有的瀏覽器遵循這些規則」什麼的。JavaScript中的內存模型
我的問題是這樣的:我要送事件定義的時間間隔,以一臺服務器,但事件可能,而這樣做,被添加到我的陣列,即:
function storeEvent(event) {
// may be called at any time
storedEvents.push(event);
}
function broadcastEvents() {
if (storedEvents.length !== 0) {
var eventString = JSON.stringify(storedEvents);
storedEvents = [];
// send eventString to server
}
window.setTimeout(broadcastEvents, BROADCAST_TIMER);
}
有沒有在一個明顯的競爭條件在那裏,甚至沒有想到失蹤的記憶障礙。
怎麼辦?真的在這裏失蹤了Java內存模型..
查看[這篇文章](http://stackoverflow.com/questions/7575589/how-does-javascript-handle-ajax-responses-in-the-background/7575649#7575649)簡要描述了javascript事件隊列的工作原理以及爲什麼這不是一個競爭條件。 – jfriend00
@ jfriend00謝謝 - 所以它基本上是沒有重入的通常的消息泵實現。很高興知道,即使除了「它是單線程的」之外沒有關係:) – Voo
是的,這是描述它的好方法。 – jfriend00