gpt4 book ai didi

javascript - 等待多个事件

转载 作者:数据小太阳 更新时间:2023-10-29 04:01:04 25 4
gpt4 key购买 nike

我目前正在开发一个主要用于自学目的的应用程序,因为我还没有完全习惯 js,所以我可以使用一些帮助来解决我的问题:

在我的应用程序中,我使用了一个 Javascript 库 (jqMobi),它用于 DOM 操作、页面转换、ajax 调用等,我还使用 phonegap 访问设备功能,例如地理定位。

当我启动我的应用程序时,我想获取设备的地理位置,向我的服务器发送一个 ajax (jsonp) 请求(包括设备的地理位置),该请求返回我将用于构建的 JSON 对象数组列出一个 list 。

在获取地理定位之前,我需要等待 phonegap 加载。在使用 jqMobi 进行 ajax 调用和处理响应之前,我还需要等待它加载。

所以我基本上必须听一些事件

document.addEventListener("DOMContentLoaded",execute_this,false);  //jqMobi is now ready
document.addEventListener("deviceready", execure_sth, false); //Phonegap is now ready

如何在这两个事件都触发后立即执行一个函数,而不是之前?

如果我使用 jQuery,我会使用它的 $.Deferred 对象和它的 When ... Then 函数,但由于我无法访问这些,所以我正在寻找一个替代方案。

最佳答案

乍一看,像这样的东西肯定有用:

var executed_this = false, executed_sth = false;

function execute_this() {
executed_this = true;
combined_execution();
}

function execute_sth() {
executed_sth = true;
combined_execution();
}

function combined_execution() {
if (executed_this && executed_sth) {
// magic!
}
}

但是不可扩展(如果你想等待第三个事件怎么办?)。计数器可以工作:

var wait_on = 2;

function execute_this() {
combined_execution();
}

function execute_sth() {
combined_execution();
}

function combined_execution() {
wait_on--;
if (wait_on === 0) {
// magic!
}
}

更具可扩展性,但假设事件只触发一次。无论哪种方式,这些都是可以控制您所要求的流量控制类型的原语,而其他一切(在大多数情况下)都是对这两者的更高级别的抽象。

关于javascript - 等待多个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960773/

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