LocalStorage: блокировка события хранения - PullRequest
0 голосов
/ 27 мая 2019

Я работаю с 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, которое я не заметил)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...