单线程
首先,我们要清楚 JS 是单线程,了解 java 的会知道 java 支持多线程。单线程就是只有一条执行线。
同步
我们先介绍一下同步,简单的说就是代码自上而下的执行,执行顺序严格按照我们函数的调用顺序。
异步
我们要清楚,JS为什么要引入异步,这样会对异步较容易理解。
js是制作网页的,那我们就要了解浏览器对网页文件的解析。首先浏览器会执行HTML,CSS文件渲染网页,但一旦遇到script标签,就会停止网页渲染而去加载JS文件,直到js文件加载结束才会继续渲染网页。那这样机会有一个问题,如果js文件加载事件很长呢?这样会很影响用户的体验。所以啊我们会把script标签放在html文件的末端,这样就可以等到网页渲染结束后再进行js文件加载。
JS异步和这个是同样的道理,异步就是调整函数的执行顺序。将异步的函数放入一个任务队列,而非异步的直接进入执行栈,直到任务队列的函数通知执行栈可以执行某个异步函数了,才会将任务队列的异步函数放入执行栈并执行。这个过程是一直循环的,直到全部的任务都执行完。
javascript">function show1(){
console.log('1');
}
function show2(){
settimeout(()=>{
console.log('2');
},1000)
}
function show3(){
console.log('3');
}
function show4(){
console.log('4');
}
show1();
show2();
show3();
show4();
//上面代码的执行结果 1,3,4,2
//同步的结果 1,2,3,4