javascript中事件处理程序的异步或同步调用
Posted
技术标签:
【中文标题】javascript中事件处理程序的异步或同步调用【英文标题】:Asynchronous or Synchronous calling of event handlers in javascript 【发布时间】:2013-04-02 04:27:59 【问题描述】:在 javascript 中事件处理程序是同步执行还是异步执行? 这是JS bin,它表明事件处理程序是同步执行的。
代码:
$('#toclick').bind('custom', function()
for (var i=0; i<100000; i++)
console.log('Inside click handler');
);
$('#toclick').trigger('custom');
console.log('Outside click handler');
输出:
Inside click handler
Outside click handler
这意味着如果我们触发一个事件,它下面的代码将不会被执行,除非所有的事件处理程序都被执行。我说的对吗?
Bin with multiple event handlers
【问题讨论】:
所有事件都是同步的。您可能还想查看事件传播quirksmode.org/js/events_order.html 【参考方案1】:没错。所有事件处理程序都是按绑定顺序同步触发的。
【讨论】:
非常感谢!刚弄糊涂了。感谢您的澄清。 你觉得Some event handlers are executed synchonously and others asynchronously.
怎么样?
@xianshenglu 有点混乱。一旦触发事件,所有绑定到它的处理程序都会同步运行。但是事件(例如加载)可以异步触发。所以处理程序总是同步的。而事件本身不需要。注意trigger
函数同步触发事件。【参考方案2】:
一些事件处理程序是同步执行的,而另一些是异步执行的。 见DOM-Level-3-Events
【讨论】:
感谢您提供有用的信息。在旁注中,不鼓励仅链接答案。请尝试在答案中添加更多信息。无论如何,谢谢!以上是关于javascript中事件处理程序的异步或同步调用的主要内容,如果未能解决你的问题,请参考以下文章