Метод keys в библиотеке localForage имеет следующую
сигнатуру:
localforage.keys(callback?: Function): Promise<string[]>
или в полностью промис-ориентированном виде:
localforage.keys(): Promise<string[]>
Метод возвращает промис, который разрешается массивом строк — ключей, хранящихся в текущем хранилище.
Метод keys используется для получения полного списка
всех ключей, сохранённых в выбранном storage backend (IndexedDB, WebSQL
или localStorage в зависимости от конфигурации и окружения).
Основная задача метода — предоставить возможность:
Метод работает асинхронно вне зависимости от выбранного драйвера хранения. Даже если backend фактически синхронный (например, localStorage), localForage приводит вызов к промис-формату.
Внутренне выполнение зависит от драйвера:
SEL ECT key FR OM table;localStorage.length.Метод возвращает:
Promise<string[]>
Содержимое массива:
При использовании TypeScript можно описать метод следующим образом:
interface LocalForage {
keys(): Promise<string[]>;
keys(callback?: (err: any, keys: string[]) => void): Promise<string[]>;
}
Важно учитывать, что callback-стиль считается устаревающим паттерном и применяется только для обратной совместимости.
Если передан callback:
localforage.keys((err, keys) => {
if (err) {
console.error(err);
return;
}
console.log(keys);
});
err содержит ошибку при сбое доступа к storage;keys — массив строк ключей;Порядок ключей не является детерминированным. Например:
ORDER BY.Метод возвращает все ключи без исключений:
Фильтрация выполняется на уровне приложения.
Сложность операции:
При большом объёме данных вызов может быть затратным по времени.
localforage.keys().then((keys) => {
console.log('Все ключи:', keys);
});
Ошибки могут возникать в следующих случаях:
Пример обработки:
localforage.keys()
.then(keys => {
console.log(keys);
})
.catch(err => {
console.error('Ошибка получения ключей:', err);
});
async function getAllKeys() {
const keys = await localforage.keys();
return keys;
}
Асинхронная форма упрощает композицию с другими операциями:
async function clearIfEmpty() {
const keys = await localforage.keys();
if (keys.length === 0) {
console.log('Хранилище пустое');
}
}
Object.keys(localStorage);length — возвращает количество записей, но не сами
ключи;iterate — позволяет обход с доступом к значениям;getItem — работает по конкретному ключу;keys — даёт только список идентификаторов без
значений.Метод keys занимает промежуточную позицию между
статистикой и полным обходом данных.
const keys = await localforage.keys();
Далее возможно:
const keys = await localforage.keys();
for (const key of keys) {
if (key.startsWith('temp_')) {
await localforage.removeItem(key);
}
}
const keys = await localforage.keys();
const data = await Promise.all(keys.map(k => localforage.getItem(k)));
При вызове метод:
Каждый драйвер реализует этот процесс по-своему, но контракт API остаётся единым.
Метод стабилен во всех современных браузерах, поддерживаемых localForage. Поведение может отличаться только на уровне производительности и порядка ключей, но не по контракту возврата данных.