Я использую IndexedDB , Web SQL или Web Storage для хранения некоторых данных на клиенте (или откат к AJAX в случае, если клиент не ' Поддерживает любое хранилище). Когда страница загружается, я хочу отобразить некоторые данные из магазина. Но я не могу отобразить данные, когда DOM готов, потому что хранилище может быть не готово, и я не могу отобразить данные, когда хранилище готово, потому что DOM может быть не готов.
Очевидно, я мог бы реализовать какое-то условие, которое проверяет флаги, установленные dom и store, или я мог бы использовать тайм-аут, но это выглядит неаккуратно (и не будет хорошо масштабироваться, если будет выполнено более 2 условий). Есть ли вообще "хороший" способ справиться с этой ситуацией? Я бы предпочел кросс-браузерное решение (например, watch
не будет работать).
Пример ситуации:
// FooServiceFactory decides which storage method to use based on
// what the browser allows and returns a new instance of the
// implementation and starts initializing resources.
var fooService = FooServiceFactory.getInstance();
// DOM is ready
window.onload = function() {
// fooService may not be ready yet depending on whether
// storage has already been setup or if resources need to
// be retrieved from the server. But I don't want this calling
// JS to know about that.
fooService.getAllFoo(request, function(response, status) {
// do something with response
});
};
Примечание: я принял свой собственный ответ на данный момент, но все еще открыт для более эффективных способов справиться с этим.