执行环境:js的执行环境是单线程的,它一次只能执行一个任务,按照主线程里执行栈里任务的排列来执行。
同步任务:是按照主线程里执行栈里任务的排列来执行的。
异步任务:遇到异步任务,先不放入主线程,因为异步任务不知道什么时候才能获取结果,这样会影响页面正常显示。当异步任务执行后,进入阻塞状态,主线程会继续向下执行代码,当异步任务执行完成,把对应的回调函数封装成事件放入任务队列中,当主线程里的任务执行完毕,才去任务队列中找事件中的回调函数来执行,这些事件的回调函数都执行完后,相当于完成了一次事件循环。
同步和异步的区别:同步会阻塞后续代码的执行,异步不会阻塞后续代码的执行。
前端会用到异步的地方:
1.setInterval 、 setTimeout
setInterval(function(){
console.log("a")
}, 3000)
//每隔3秒会把回调函数封装成事件放入任务队列中
2.ajax请求
$.get("./data.json",(data)=>{
console.log(data)
})
//当请求完成把回调函数封装成事件放入任务队列中
3.事件绑定
document.getElementById("btn").addEventListener("click",function(){})
//当鼠标点击该按钮,相当于该异步任务完成,把放入任务队列中。
来源:CSDN
作者:weixin_42881046
链接:https://blog.csdn.net/weixin_42881046/article/details/104296068