我正在使用IndexedDB、Web SQL或Web Storage在客户端上存储一些数据(或者在客户端不支持任何存储的情况下回退到 AJAX)。当页面加载时,我想显示来自商店的一些数据。但是当 DOM 准备好时我无法显示数据,因为商店可能还没有准备好,当商店准备好时我无法显示数据,因为 DOM 可能还没有准备好。
显然,我可以实现一些条件来检查 dom 和 store 设置的标志,或者我可以使用超时,但这似乎很草率(如果需要满足两个以上的条件,则无法很好地扩展)。是否有一种普遍“好”的方法来处理这种情况?我更喜欢跨浏览器的解决方案(例如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
});
};
注意:我现在接受了自己的答案,但仍然愿意接受更好的处理方式。