gpt4 book ai didi

javascript - 如何触发依赖于 2 个(或更多)条件的 JS 事件

转载 作者:行者123 更新时间:2023-11-30 18:42:02 25 4
gpt4 key购买 nike

我正在使用 IndexedDB , Web SQLWeb Storage在客户端上存储一些数据(或者在客户端不支持任何存储的情况下回退到 AJAX)。当页面加载时,我想显示商店中的一些数据。但是当 DOM 准备好时我无法显示数据,因为商店可能还没有准备好,而当商店准备好时我无法显示数据,因为 DOM 可能还没有准备好。

显然,我可以实现一些条件来检查由 dom 和存储设置的标志,或者我可以使用超时,但这看起来很草率(如果需要满足 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
});
};

注意:我现在接受了我自己的回答,但仍然愿意接受更好的处理方法。

最佳答案

在做相互依赖的异步工作时,我通常会使用计数器。

var running = 0;

function fire(){
running++;

//fire ajax bind callback

}

function callback(data){
//do some stuff for this request
if(--running == 0){
//do special stuff that relies on all requests
}
}

两个请求同时返回并且都将 if 子句评估为 true 的可能性几乎为零。

关于javascript - 如何触发依赖于 2 个(或更多)条件的 JS 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com