一个dom,点击事件触发两个事件是同步还是异步
来源:互联网 发布:h3c snmp 网管软件 编辑:程序博客网 时间:2024/06/05 14:55
问题产生原因:
用户充值接口,一个选择支付方式的dom绑定了一个插入订单的 ajax。
为了监测用户点了哪个支付方式,现在要把选择哪个支付方式记录下来。
当然可以在这个ajax请求的方法里面加入一个插入监测数据。但是考虑到插入订单的时候要与很多支付平台对接,速度会本来比较慢。万一出现意外情况导致订单插入失败,会比较麻烦。
然后研究了下。一个dom绑定两个事件,执行顺序的问题。
$('#dom').onclick(function1 (){ $.ajax({ ... }););$('#dom').onclick(function2 (){ $.ajax({ ... }););
看到的别东西:
JS事件绑定的几种方式
1. <div id="outestA" onclick="return buttonHandler(this);"></div> 2. <div id="outestA" onclick="var id = this.id;alert(id);return false;"></div> 3. var dom = document.getElementById("outestA"); dom.onclick = function(){alert("1=" + this.id);}; dom.onclick = function(){alert("2=" + this.id);}; 后面的会覆盖前面的4. addEventListener(type, listener, useCapture);// type:事件类型,不含"on",比如"click"、"mouseover"、"keydown"; // 而attachEvent的事件名称,含含"on",比如"onclick"、"onmouseover"、"onkeydown"; (IE特有)// listener:事件处理函数 // useCapture是事件冒泡,还是事件捕获,默认false,代表事件冒泡类型 ps:翻译是否使用捕获 //同一个事件函数,并且事件类型都为冒泡或者事件捕获类型,那只能绑定一次,
JS事件冒泡和事件捕获
userCapture 为false事件冒泡执行顺序: 从内部到外部Document。userCapture 为true事件捕获执行顺序 : 从Document向内部执行Dom事件流:包含userCapture ture 和 false捕获阶段的处理函数最先执行,其次是目标阶段的处理函数,最后是冒泡阶段的处理函数。目标阶段的处理函数,先注册的先执行,后注册的后执行。
从这里看,执行肯定是有先后顺序的。那如果其中的一个ajax有问题,会不会影响到另一个的运行?
<span class="test">测试Ajax执行顺序</span>><script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script type="text/javascript">$('.test').click(function(){ $.ajax({ url:'http://test.iok.la/sdk/', type:'post', dataType:"jsonp", success:function(res){ console.log(res); }, });});$('.test').click(function(){ $.ajax({ url:'http://test.iok.la/sdk2', type:'post', dataType:"jsonp", success:function(res){ console.log(res); }, });});</script>
- 测试结果,第一个ajax先运行。
- 第一个不会影响第二个的运行(链接错误或者 在后端sleep(20)都不影响)。
是异步的!其实想一想也是,ajax 本来一个特性就是异步的。。。。。。。正常来说的话也应该是这样子的。。。。
小收获
发现了一篇文章 主体的内容将的是 JS操作DOM到底是同步还是异步的
https://segmentfault.com/q/1010000005630545?_ea=903562
额…………看了好久,还是没怎么懂他们要表达的内容。。。。暂时先放一放~~以后研究
//显示加载动画
js 延迟加载,setTimeout
utils.loading(); //让JS线程等待100毫秒,等待会让UI渲染进程实现, //如果发现setTimeout还要隔较长时间才到期,为了避免时间上的浪费,浏览器选择马上切换到UI线程。 setTimeout(function(){ //长时间的js计算,同步请求等耗时操作 for(var i=0;i<100;i++){ console.log(11); } //关闭加载动画 utils.closeload(); },1000);
阅读全文
0 0
- 一个dom,点击事件触发两个事件是同步还是异步
- 如何点击一个按钮 分别触发两个jquery事件
- 一个按钮触发两个事件
- 一次点击事件,触发两次异步请求
- 让二个事件同时点击 只触发一个
- 一个按钮点击两次触发不同事件
- 一个按钮触发两个事件可以吗?
- 异步事件 同步事件
- 触发点击图片事件
- 点击关闭 触发事件
- wpf触发点击事件
- js触发点击事件
- jquery触发点击事件
- javascript 点击触发事件
- 手动触发点击事件
- 触发鼠标点击事件
- 在android中用代码触发一个按钮的点击事件的代码是: buttonName.performClick();
- 代码触发两个按钮相同的点击事件方法
- jqObject.each()和$.each()区别
- 太上感应篇0019
- python-Beautiful Soup解析数据
- 我的Spring学习记录(三)
- printf实现原理
- 一个dom,点击事件触发两个事件是同步还是异步
- Centos 7 配置Java开发环境
- ssh服务的端口转发模拟
- 利用FreeMaker实现网页到Word文档的生成
- 冒泡排序
- 宜信笔试
- 如何在github上面克隆branch和tag文件
- 习题6-9 纸牌游戏(“Accordian” Patience, UVa 127)
- 进程的始与终