【问题标题】:Asynchronous or Synchronous calling of event handlers in javascriptjavascript中事件处理程序的异步或同步调用
【发布时间】: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

【问题讨论】:

标签: javascript jquery asynchronous event-handling synchronous


【解决方案1】:

没错。所有事件处理程序都是按绑定顺序同步触发的。

【讨论】:

  • 非常感谢!刚弄糊涂了。感谢您的澄清。
  • 你觉得Some event handlers are executed synchonously and others asynchronously.怎么样?
  • @xianshenglu 有点混乱。一旦触发事件,所有绑定到它的处理程序都会同步运行。但是事件(例如加载)可以异步触发。所以处理程序总是同步的。而事件本身不需要。注意trigger函数同步触发事件。
【解决方案2】:

一些事件处理程序是同步执行的,而另一些是异步执行的。 见DOM-Level-3-Events

【讨论】:

  • 感谢您提供有用的信息。在旁注中,不鼓励仅链接答案。请尝试在答案中添加更多信息。无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多