JavaScript的同步异步和事件循环

一、什么是同步异步?

    1.同步:可以理解为做事情有自己的顺序(或者比喻成自己列的一个完成事情的清单),这件事做了才能做下一件事情.就像走路一样,左脚迈了才能迈右脚

    2. 异步:与上述相反,不按清单顺序来,可以这件事完成后甚至是一半回头来做上一件事情

二、.JS的同步异步

     1.JS是单线程语言,只能同时做一件事;由于dom渲染,网络请求等比较耗时,同步会阻塞代码执行,需要异步,js异步任务是以回调callback形式执行调用的.

     2.在JS中,总是先把同步代码执行完,再去执行异步代码

三、什么是事件循环(event loop)?

    1.事件循环其实就是说的js同步异步代码的执行机制:                

       1)从前到后,一行一行执行

扫描二维码关注公众号,回复: 16843825 查看本文章

       2)如果某一行执行报错,则停止下面代码的执行

       3)先把同步代码执行完,再执行异步

     2.event loop具体执行过程

        1)同步代码 ,一行一行执行

        2)遇到异步,会先记录下,等待时机(定时、网络请求等)

        3)时机到了,就移动到callback queue

        4)如call stack为空(即同步代码执行完)event loop开始工作

        5)轮询查找callback queue,如有则移动到call stack执行

        6)然后继续轮询查找

四、宏任务与微任务

    1.JS异步代码中,又分为宏任务与微任务

    2.宏任务:setTimeout,setInterval,Ajax,DOM事件等

       微任务:Promise async/a

猜你喜欢

转载自blog.csdn.net/qq_45199056/article/details/126259262