Сигнатура:
ready(callback?: Function): Promise<void>
Метод ready в localForage используется для контроля
момента полной инициализации хранилища. Он гарантирует, что выбранный
драйвер (IndexedDB, WebSQL или localStorage) уже определён,
сконфигурирован и готов к выполнению операций чтения и записи.
localForage работает поверх нескольких механизмов хранения данных,
выбор которых может происходить автоматически или явно через
setDriver. Поскольку инициализация драйвера может быть
асинхронной (особенно IndexedDB), возникает необходимость в точке
синхронизации.
ready выполняет роль такого синхронизатора:
getItem,
setItem, removeItem, iterate и
других.При первом обращении к localForage библиотека проходит несколько стадий:
config)setDriver)Метод ready возвращает Promise, который резолвится
только после завершения всех этих этапов.
Если драйвер уже инициализирован, ready завершается
мгновенно (микрозадача Promise).
Promise<void>
Promise всегда резолвится без значения (undefined),
поскольку метод предназначен исключительно для синхронизации
состояния.
callback?: Function
Допускается передача функции обратного вызова для совместимости со старыми стилями кода.
Особенности поведения:
ready уже завершён — callback вызывается
асинхронно;Эквивалентные формы:
localforage.ready().then(() => {
// storage готов
});
localforage.ready((err) => {
if (err) return;
// storage готов
});
Внутренне метод можно рассматривать как:
ready(callback?: (err?: any) => void): Promise<void>
При этом callback — необязательный слой поверх Promise API.
После завершения ready выполняются следующие
гарантии:
Важно, что ready не гарантирует наличие данных, он
гарантирует только готовность системы хранения.
Наиболее частый источник задержки — IndexedDB:
Поэтому ready фактически ожидает завершения
indexedDB.open() и всех связанных событий.
Метод можно вызывать многократно:
localforage.ready().then(...)
localforage.ready().then(...)
Поведение:
Это делает метод безопасным для использования в разных частях приложения.
ready тесно связан с конфигурационными методами:
Изменение конфигурации до ready влияет на выбор
драйвера.
localforage.config({
name: 'app',
storeName: 'cache'
});
Явное задание драйвера влияет на процесс инициализации:
localforage.setDriver(localforage.INDEXEDDB).then(() => {
return localforage.ready();
});
Если setDriver уже завершён, ready
становится фактически мгновенным.
await localforage.ready();
const value = await localforage.getItem('key');
localforage.ready().then(initApp);
localforage.ready((err) => {
if (err) return;
startCacheLayer();
});
Хотя ready редко выбрасывает ошибки, возможны
ситуации:
В таких случаях Promise может быть отклонён или callback получит ошибку.
Метод не относится к CRUD-операциям и не работает с данными напрямую.
Сравнение:
setItem/getItem — работа с даннымиclear/removeItem — модификация данныхready — контроль состояния системы храненияЕсли вызовы происходят до готовности:
localforage.setItem('a', 1);
localforage.ready();
localForage автоматически ставит операции в очередь до завершения
инициализации. Однако явное использование ready даёт
контроль над моментом старта логики приложения.
ready возвращает стабильный Promise (idempotent);Упрощённо:
if (storage.initialized)
resolve immediately
else
wait for driver selection + initialization
resolve
ready — это точка синхронизации всей архитектуры
localForage. Любая работа с данными логически должна происходить после
её завершения, даже если библиотека допускает отложенное выполнение
операций.
Она формирует границу между: