先来看看问题:
问题:
1.为何onfoucs事件在这段代码中是最后才执行的?
2.这里有涉及到异步?不然的话为何onfocus事件还没执行,就继续解析下一段代码了?
代码如图:
我在chrome,FF浏览器的运行结果得到的顺序都是:
1.console.log(document.readyState)
2.alert()语句
3.最后才是onfocus方法
运行结果:
1.一定是先出现loading的,否则alert会阻塞进程。
2.当我按下确定,则出现了下一段的test
这里面涉及到JS中的事件运行机制问题:
原理是:当DOM事件,异步任务等执行的时候,JS会把他们push到任务队列中等到当前主进程中的同步任务执行完毕后才会读取任务队列中的事件。因此,上述代码中的代码,onfocus永远都是最后执行,因为他是DOM事件同时他是异步的
附上我在SF上面的本次问题的参考:https://segmentfault.com/q/1010000012255353