Подтвердить что ты не робот

Является ли HTML5 localStorage асинхронным?

Является ли функция setItem(key,value) асинхронной?

localStorage.setItem("key",someText);
4b9b3361

Ответ 1

Нет, все вызовы localStorage являются синхронными.

Ответ 2

На самом деле. веб-хранилище больше не является частью основного стандарта HTML5, оно отделяется.

Соответствующая (черновик) спецификация может быть найдена здесь, и одна вещь, которую вы заметите, это то, что она не упоминает синхронный или асинхронный нигде.

Однако анализ текста предположил бы, что он должен быть синхронным (мой смелый):

Метод setItem (ключ, значение) должен сначала проверить, существует ли пара ключей/значений с заданным ключом в списке, связанном с объектом.

Если это не так, то новая пара ключей/значений должна быть добавлена ​​в список с заданным ключом и с его значением, установленным в значение.

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

В стандартах слова типа must, shall и may несут очень специфические значения. Тот факт, что он говорит о том, что должен сделать этот метод, означает, что сам метод должен это сделать, а не отложить его до более позднего времени.

Это также относится к здравому смыслу. Если setItem были асинхронными, можно было бы установить элемент в определенное значение, а затем сразу получить его, получив предыдущее значение.


В нижней части раздела интерфейса хранения есть примечание, в котором намекает на возможность асинхронного поведения:

Эта спецификация не требует, чтобы указанные выше методы подождали, пока данные будут физически записаны на диск. Требуется только согласованность в том, какие разные скрипты, получающие доступ к одному и тому же базовому списку пар ключ/значение, необходимы.

Однако это только в терминах того, что написано для длительного хранения. В последнем предложении указано, что скрипты, обращающиеся к одному и тому же объекту хранилища, обязаны видеть вещи синхронно.