JS同步和异步
1.同步:指的是一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
2.异步:指的是每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的,异步的。
3.JavaScript如何实现异步原理?
首先 JS 是单线程的语言,即同一时间只能做一件事,那JS 如何实现异步的,异步和单线程不是自相矛盾吗?其实,单线程和异步确实不能同时成为一个语言的特性,JS选择了成为单线程语言,所以它本身不可能是异步的,但是JS宿主环境(比如浏览器,Node)是多线程的,宿主环境通过某种方式(事件驱动)是的JS具备了异步的属性。
注意:JS的工作机制是当线程空闲的情况下才会执行异步代码的回调,即当所有同步任务执行完毕后才会执行异步任务的回调。
总结:当 JS 执行到异步任务后,会将异步任务交给浏览器进行执行,当执行有结果时会把异步任务的回调函数插入待处理队列的队尾。
4. AJAX 发送异步请求浏览器做了什么?
1. JS创建了一个ajax 请求
2. 浏览器另外开启一个ajax引擎线程,执行ajax请求
3.执行得到响应后讲回调函数放入任务队列中。
4.JS执行任务队列中的回调函数。
5.有哪些常见的异步回调函数?
1.点击事件
2. Ajax请求
3.定时器
6.浏览器处理点击事件的过程
浏览器开启事件触发线程,等待用户动作,事件触发线程解析为响应事件,转移到JavaScript引擎处理。