Я работаю с localStorage для распространения информации между вкладками в одном проводнике.
У меня действительно есть слушатель хранилища, который делает некоторые вещи, и идея состоит в том, чтобы удалить событие, как только оно было обработано, потому что Я не хочу обрабатывать его дважды .
var storageListener = function(storageEvent) {
var data = localStorage.getItem(storageEvent.key);
if(data != null){
// some code
localStorage.removeItem(storageEvent.key);
}
}
window.addEventListener('storage', storageListener);
Моя проблема довольно проста. Если мое приложение будет запущено 5 раз, я выполню 5 раз этот код.
Я прочитал спецификацию локального хранилища: https://www.w3.org/TR/webstorage/#the-localstorage-attribute
И они говорят, что:
Из-за использования мьютекса хранилища несколько контекстов просмотра смогут одновременно обращаться к локальным областям хранения таким образом, что сценарии не могут обнаружить одновременное выполнение сценария .
Как я понимаю, невозможно обнаружить другие случаи события, генерируемого моим слушателем событий (так как мой английский не идеален, я надеюсь, что я ошибаюсь!)
Знаете ли вы, можно ли поставить «замок» или что-то подобное в моем случае, чтобы обработать задание только один раз?
Большое спасибо
РЕДАКТИРОВАТЬ: Я видел некоторые решения ручной работы, которые могли бы работать, но всем им 7 или 8 лет. Есть ли общий способ сделать это сейчас? (Или они сделали что-то нативное в localStorage, которое я не заметил)?