当前位置:首页 > 开发 > Web前端 > JavaScript > 正文

JavaScript的事件处理函数是同步执行的, 不是异步

发表于: 2014-03-12   作者:darrenzhu   来源:转载   浏览次数:
摘要: 特别提出一点, 触发事件并执行事件处理函数是一个同步过程,不是异步过程. 所以事件机制并不是异步的.如果你对这句话,有疑问, 请自行编写代码验证,以前我总认为事件机制异步的, 但不是, 如下所示, function testSynchronousEventHandler() { var event1 = new CustomEvent("event1", {

特别提出一点, 触发事件并执行事件处理函数是一个同步过程,不是异步过程. 所以事件机制并不是异步的.如果你对这句话,有疑问, 请自行编写代码验证,以前我总认为事件机制异步的, 但不是, 如下所示,

function testSynchronousEventHandler() {
	var event1 = new CustomEvent("event1", {
		detail : {
			message : "event1 handler",
			time : new Date(),
		},
		bubbles : true,
		cancelable : true
	}), event2 = new CustomEvent("event2", {
		detail : {
			message : "event2 handler",
			time : new Date(),
		},
		bubbles : true,
		cancelable : true
	});

	this.addEventListener("event1", function(e) {
		console.log(e.detail.message);
	}, false);

	this.addEventListener("event2", function(e) {
		console.log(e.detail.message);
	}, false);

	this.dispatchEvent(event1);
	console.log('after event1')
	this.dispatchEvent(event2);
	console.log('after event2')
}


上面的代码在chrome里面的(IE9以下不支持customer event)执行结果是:
event1 handerl
after event1
event2 handler
after event2

绝对不会是: after event1 出现在event1 handler 前面, 因为事件触发是一个同步过程,不是触发了,先执行后面的代码,再执行事件处理函数里面的代码, Ajax的callback函数执行是异步的,那是因为需要与服务器打交道,所以js会先执行后面的代码,等ajax结果返回时,再执行callback函数里面的代码, 但是事件触发机制本身不是异步的.

JavaScript的事件处理函数是同步执行的, 不是异步

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
为了适应异步编程,减少回调的嵌套,我在项目中引入了Async,当批量处理且需要同步执行一些逻辑相同
正如动静是相对的概念,有了它们,世界才充满盎然生气;变和不变也是哲学上的对立统一,在代码的世
正如动静是相对的概念,有了它们,世界才充满盎然生气;变和不变也是哲学上的对立统一,在代码的世
顾名思义:同步任务是指事情需要一件一件的做,做完当前的任务,才能开始做下一任务;异步任务是指
顾名思义:同步任务是指事情需要一件一件的做,做完当前的任务,才能开始做下一任务;异步任务是指
顾名思义:同步任务是指事情需要一件一件的做,做完当前的任务,才能开始做下一任务;异步任务是指
此理解范例代码来自前几篇随笔! 首先我们来先了解下AJAX: Ajax:全称“Asynchronous Javascript an
顾名思义:同步任务是指事情需要一件一件的做,做完当前的任务,才能开始做下一任务;异步任务是指
本章目标 掌握JavaScript中的主要事件使用; 掌握JavaScript与表单的操作; 掌握正则表达式在JavaSc
什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水。当我们与浏
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号