Метод removeItem в библиотеке localForage предназначен
для асинхронного удаления значения по указанному ключу из выбранного
хранилища. Операция выполняется независимо от используемого драйвера
(IndexedDB, WebSQL или
localStorage) и возвращает Promise, что
обеспечивает единообразную модель работы с удалением данных.
localforage.removeItem(key);
Параметры:
key — строка, уникальный идентификатор записи, которая
должна быть удалена.Возвращаемое значение:
Promise<void> — промис, который завершается после
успешного удаления или отклоняется при ошибке.Операция удаления в localForage обладает рядом
особенностей, связанных с абстракцией над различными механизмами
хранения:
localStorage.В случае использования IndexedDB удаление выполняется
через транзакцию с операцией delete по ключу object store.
Операция участвует в транзакционной модели, что гарантирует
согласованность данных.
При использовании WebSQL выполняется SQL-запрос
вида:
DELETE FR OM keyvaluepairs WH ERE key = ?
Операция зависит от транзакции базы данных и возвращает результат
через callback, который оборачивается в Promise.
Для localStorage удаление выполняется через:
localStorage.removeItem(key);
Несмотря на синхронную природу API, localForage
оборачивает операцию в асинхронный интерфейс для унификации
поведения.
Метод всегда возвращает Promise, что позволяет
выстраивать цепочки операций хранения данных:
localforage.removeItem('sessionToken')
.then(() => {
console.log('Запись удалена');
})
.catch((err) => {
console.error('Ошибка удаления:', err);
});
Особенность заключается в том, что успешное завершение промиса не зависит от того, существовал ли ключ перед удалением.
При попытке удалить ключ, который отсутствует в хранилище, ошибка не генерируется. Поведение считается корректным и эквивалентно успешному выполнению операции.
Это упрощает логику синхронизации состояния, поскольку отсутствует
необходимость предварительной проверки наличия записи через
getItem.
Удаление затрагивает только конкретную запись по ключу. Остальные данные в хранилище остаются неизменными.
Пример:
await localforage.setItem('user', { name: 'Alex' });
await localforage.setItem('theme', 'dark');
await localforage.removeItem('user');
После выполнения останется только ключ theme.
При параллельных вызовах removeItem и других методов
(setItem, getItem) возможны следующие
сценарии:
setItem выполняется после removeItem,
значение может быть восстановлено;removeItem выполняется после setItem,
итоговое значение будет удалено;Для критичных сценариев используется последовательное выполнение
операций через цепочки промисов или async/await.
removeItem удаляет конкретный ключ, тогда как
clear очищает всё хранилище:
removeItem('key') — точечное удалениеclear() — полное удаление всех записейИспользование removeItem предпочтительно при
необходимости сохранения остального состояния.
Ошибки возникают в следующих случаях:
Стандартный шаблон обработки:
localforage.removeItem('cache')
.catch((error) => {
// обработка сбоя удаления
});
Удаление через removeItem является одной из наиболее
лёгких операций в localForage:
IndexedDB — удаление ключа без перебора записей;localStorage — удаление O(1) по ключу;WebSQL — SQL-операция по индексу.Основное влияние на производительность оказывает драйвер и объем базы, однако операция остаётся атомарной и быстрой в большинстве сценариев.
Метод часто применяется в сценариях управления жизненным циклом данных:
Пример цепочки:
await localforage.removeItem('draft');
await localforage.setItem('draft', newData);
localStorage.removeItem остаётся
логически идентичным.localForage обеспечивает атомарность удаления в рамках
конкретного драйвера. Это означает, что: