Является ли HTML5 localStorage асинхронным?
- Это
2 ответа:
на самом деле. веб-хранилище больше не является частью основного стандарта HTML5, оно было отделено.
соответствующая (черновик) спецификация может быть найдена здесь и единственное, что вы заметите, это то, что он нигде не упоминает синхронный или асинхронный.
однако анализ текста предполагает, что он должен быть синхронным (мой жирный шрифт):
The setItem(ключ, значение) метод должны сначала проверить, если пара ключ/значение при этом данный ключ уже существует в списке, связанном с объектом.
если это не так, то новая пара ключ / значение должны быть добавлены в список, С указанным ключом и значением стоимости.
если данный ключ существует в списке, и его значение не равно значению, то это должен иметь значение обновляется!--15--> значение. Если ее значение равно значению, то метод должен делать ничего.
в стандартах, такие слова, как
must
,shall
иmay
нести очень конкретный смысл. Тот факт, что это говорит о том, что метод must do означает, что сам метод должен сделать это, а не откладывать его на некоторое более позднее время.Это также относится и к здравому смыслу. Если
setItem
были асинхронными, можно было бы установить элемент в определенное значение, а затем сразу же получить его, получив его предыдущий значение.
здесь и примечание в нижней части раздела интерфейса хранения, которое намекает на возможность асинхронного поведения:
это только с точки зрения того, что записано на долгосрочное хранение. Последнее предложение предписывает, что сценарии, обращающиеся к одному и тому же объекту хранения, должны видеть вещи синхронно.эта спецификация не требует, чтобы вышеуказанные методы ждали, пока данные не будут физически записаны на диск. Требуется только согласованность в том, что видят разные сценарии, обращающиеся к одному и тому же базовому списку пар ключ/значение.