先附上我看的感觉很容易懂的链接:https://www.bilibili.com/video/BV1oV411k7XY
众所周知,JS是单线程的,一次执行一件事情,这就是同步的概念。但是因为现在代码需求量各种升级,各种各种情况,导致同步不够用了,于是引入了异步的概念。
同步任务:按从上往下的顺序进行执行。
异步任务:不进入主线程,但是进入任务线程中。其中又分为宏任务和微任务两种。
宏任务:渲染事件、请求、script、settimeout等
微任务:promise.then、Process.nextTick等。
执行顺序就是 同步任务--->任务线程中的宏任务--->宏任务里面的微任务---->下一个同步的任务--->下一个任务线程的宏任务。
简单截图理解
执行console.log(‘hi’) 执行settimeout(先挂载到主线程)settimeout 执行settimeout(浏览器收到指令并执行启动计时器) 执行settimeout(从主线程去除)
执行主线程中console.log('jsbing') 计时结束后进入任务线程中settimeout方法
任务线程回调回主线程中执行function 执行输出,结束
网友评论