老师关于异步最后的一点疑问
请问老师关于js异步我昨天查阅了资料等等
我最后想请教的一个问题就是关于js异步是不是都是完全不同的(存在多个不同的异步处理机制)
比如事件的js异步处理机制,浅显的理解是不是相当于浏览器分出了一个线程检测事件,如果事件触发则单另一个线程在浏览器中执行事件的触发 <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> div{ background-color: red; width: 100px; height: 100px; top:0; left: 0; position: absolute; color:red; } </style> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> <div id='one'></div> <script type="text/javascript"> var one =document.getElementById('one'); // var str={"date":"one","name":"xiaowang"}; one.onclick=function(){ console.log('one'); } console.log(1); console.log(2); one.click(); console.log( 3); console.log(4); console.log(5); </script> </body> </html> 这段代码输出顺序1 2 one 3 4 5 表示事件一旦触发就会直接在浏览器中执行(ajax异步的机制和事件触发机制一样是吗)
settimeout异步的机制是不是又是另一个异步
比如
<head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> div{ background-color: red; width: 100px; height: 100px; top:0; left: 0; position: absolute; color:red; } </style> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> <div id='one'></div> <script type="text/javascript"> console.log(1); setTimeout(function(){ console.log('执行定时器'); }, 0); console.log(2); console.log(3); console.log(4); console.log(4); console.log(4);console.log(4); console.log(4);console.log(4);console.log(4); console.log(4);console.log(4); console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4); console.log(4);console.log(4);console.log(4); </script> </body> 定时器中的回调虽然为0但是会在主线程执行完成之后才会执行。
所以老师我想请教是不是说
js异步事件(包括ajax)的机制是说 虽然js是单线程,但是浏览器会分出一个时间去检测事件。一旦触发(ajax一点发送完成)浏览器会同步的在一个线程中执行他的事件函数(ajax回调的函数)。
而定时器的函数,他所谓的异步是指耗时操作只有在主线程执行完所有代码之后才会执行定时器的回调
请老师指点迷津
0
收起
正在回答
2回答
ajax的理解是正确的,但是点击事件就是代码从上到下的执行顺序而已,不要想那么复杂。
祝学习愉快~~
相似问题
登录后可查看更多问答,登录/注册
组件化思想开发电商网页 18版
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星