【记】AJAX异步对事件的影响
随手纪录工作中发现的细小,可能以后就不会重复的走这条老路!
刚刚在工作中发现一个问题,ajax的调用异步请求会对事件有很大的影响!
可能这点很多人都知道了,不过我不是写给你们看的,只是自己记录下,加深下自己的记忆。
在解决这个问题之后我才想起来好像高程有这个介绍的。只怪当时没认真看而已,js是单线程的这个基本都知道。这就引发了一个事件中执行ajax的问题
如图:这是事件中带有ajax的一般流程。
当我们事件绑定到a标签或者是checkbox和radio等dom元素的时候,都会有一个默认的行为。如果正常的流程下我们可能就像图上面的一样绿到红到黄,但是当ajax请求的时候中间会有延迟,这段空闲的时间浏览器就会把黄色的代码块移上来先执行,然后再到ajax请求返回之后再执行ajax的回调函数。这就造成了dom元素的默认行为比我们ajax回调函数先执行。
我的解决办法是:在黄色代码块中阻止其默认行为,在回调函数中手动触发行为。当然不是最优解,有更好办法的欢迎留言!
任何时候对自己认定的作品要精益求精;你不是程序员也不是设计师,你所做的事情是让浏览器成为你的舞台,让网页成为你道具,打开你的网页就是你的观众,这场戏刚刚上演!