javascript - dispatchEvent 是同步函数还是异步函数

标签 javascript dom-events windows-store-apps winjs

我正在尝试为 WinJS 中的自定义事件编写事件处理程序。我不太确定这在 IE 中是如何工作的 - 我正在创建一个自定义事件并发送它 -

var eventObject = document.createEvent("CustomEvent");
eventObject.initCustomEvent("dropbomb", true, true, null);
this._element.dispatchEvent(eventObject);

我的处理程序是 -

this._element.addEventListener("logtelemetry", function () {
                console.log("boom");
});

我能确定处理程序将同步调用而不是稍后调用吗?如果是,那么证据是什么。

最佳答案

它保证是同步的,因为:

The return value of dispatchEvent indicates whether any of the listeners which handled the event called preventDefault.

由于返回值指示是否有任何监听器处理了调用 preventDefault 的事件,因此该方法必须阻塞(不返回)直到所有监听器执行完毕,这是同步调用的定义。

以上引文摘自the dispatchEvent specification in DOM Level 2 Events , 于 2000 年 11 月获得“推荐”状态(标准)。Internet Explorer 已遵守此标准 since at least IE 9 .

要自己验证,请在 .dispatchEvent 调用后立即添加 console.log 语句,并注意 “boom”(来自您的事件处理程序)总是首先记录。

关于javascript - dispatchEvent 是同步函数还是异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277800/

相关文章:

javascript - 响应IE浏览器窗口外的onmousemove事件

c# - 在 Windows 应用商店应用程序中加密和解密本地镜像

c# - 使用 httpClient.GetAsync 时添加 header

javascript - 如何根据力沿弯曲路径移动元素?

javascript - 环回错误: Model not found: Book : When I try to run after creating a new model using command

javascript - Jquery 中的去抖动功能?

javascript - 在div内动态创建div和DOM元素的变量访问

javascript - 使用 jQuery 获取 ID 并将它们放入 Anker 导航中

javascript - 拦截 Chrome 浏览器中的 PageUp/PageDown 按键事件

c# - 后台下载器找不到文件异常