异步执行基本原理

在逆战班学习JavaScript已经一个月了,这周我们学习了异步执行,今天我就异步执行做一个简单的总结。我们都知道计算机的执行程序分为同步执行和异步执行。其中同步执行就是正常的计算机程序执行的三大顺序流程:第一为顺序控制语句,也就是所谓的从上至下,从左至右的执行顺序。第二为分支控制语句:if,swtich语句等。第三为循环控制语句:其中包括for循环,while循环 ,do…while,for…in循环,forEach循环语句。而我们的异步执行就是一种特殊的程序执行的方式,它其中包括定时器:setInterval;延时器:setTimeout;事件的绑定以及ajax请求。

我们的异步程序的执行有几个特点:首先是异步程序的执行都会放在所有的同步程序的执行结束后才会进行异步程序;其次是当同步程序都执行结束后异步程序开始执行,但是异步程序的执行也是有先后顺序的,那就是谁的时间短谁先执行,我们举个例子来看下
异步执行基本原理

我们看下他们的执行结果:

异步执行基本原理

在这儿我们可以看到,整个程序的执行顺序是第一个、第四个、第三个、第二个,这是因为第二个和第三个为异步程序,他们会在所有的同步程序执行完毕后再执行,也就是当第一个和第四个按照从上到下的顺序执行完毕后,才会执行第二个和第三个,其中又由于第二个的时间为200毫秒,比第三个的时间多,所以会先执行第三个程序,这就是为什么输出内容为1 4 3 2 的结果。

我们看下一个程序中既有同步程序,又有异步程序时的一个整体的执行原理:以上面的例子为例,就是程序从上往下执行,当到了第一个程序的时候输出一个1,然后继续往下执行,到了第二个程序的时候,它是一个异步程序,会将它放到一个异步池中不执行,然后继续往下执行,到了第三个程序的时候,又是一个异步程序,将它也放入了异步池中,也不做执行,再往下执行到第四个程序的时候,它为同步程序,输出一个4,这时所有的同步程序都执行完毕,然后执行异步池中的异步程序,程序二的时间为200毫秒,程序三的时间为100毫秒,所以先执行程序三,输出一个3,最后执行程序二,输出一个2。这就是我们看到的1 4 3 2 ,这也就是异步程序执行的原理。如果有什么错误,希望大家指出来,共同学习。