0
我正在使用BreezeJS並在本地存儲中存儲/恢復數據。這很好。當用戶打開多個選項卡時會發生此問題。每個選項卡中的更改會相互打破。更改應該在選項卡之間同步。使用BreezeJS和localStorage的Tab-to-tab通信
注:BreezeJS將負責合併更改,我只需要處理選項卡之間的競爭條件。
var stashName = 'stash_everything';
window.setInterval(function() {
var exportData = manager.exportEntities();
window.localStorage.setItem(stashName, exportData);
}, 5000);
addEvent(window, 'storage', function (event) {
if (event.key == stashName) {
var importData = window.localStorage.getItem(stashName);
manager.importEntities(importData);
}
});
我試着聽'存儲'事件,但我一直無法讓它成功工作。我要麼仍然會發生變化,要麼陷入無限循環。
問題的癥結在於我只是在計時器上儲蓄;如果我只在用戶交互後保存,那麼我會避免(大部分)競爭條件。據我所知,沒有「用戶改變了什麼,因爲上次我問你」微風輕拂,儘管如此。
有沒有人有如何解決這個問題的建議?
兩個標籤應該同步,否則這將工作正常。更新的問題在這一點上要清楚。 – studds 2014-10-02 16:27:46
這改變了你的問題的結構。這是一個很大的問題,需要做出許多設計決定,而不是相互覆蓋。我不認爲這個問題是適合在這裏了:) – 2014-10-02 16:31:15
嗯,我假設關注是合併變化?微風照顧這一點。我只需要確保每個選項卡以正確的順序讀取/寫入local storage。 – studds 2014-10-03 10:20:39