JS 事件循環(huán)機制 - 任務隊列昔搂、web API、JS主線程的相互協(xié)同
這篇文章的核心是分析js的事件循環(huán)逢勾,在此我們需要了解js單線程扶歪,及由此產(chǎn)生的同步執(zhí)行環(huán)境和異步執(zhí)行環(huán)境秸讹。
js是單線程,單線程也即是任務是串行的瓮增,后一個任務需要等待前一個任務的執(zhí)行巩步,這就可能出現(xiàn)長時間的等待。但由于類似ajax網(wǎng)絡請求,setTimeout的時間延遲绞蹦,dom時間的用戶交互等力奋,這些任務并不消耗CPU,是一種空等幽七,資源浪費景殷,因此出現(xiàn)異步。通過將任務交給相應的異步模塊去處理澡屡,主線程讀取相應的callback猿挚,進行后續(xù)的操作,最大程度的利用cpu驶鹉,此時出現(xiàn)了同步和異步執(zhí)行的概念亭饵。同步執(zhí)行是主線程按照順序,串行執(zhí)行任務梁厉,異步執(zhí)行就是cpu跳過等待辜羊,先處理后續(xù)任務。由此產(chǎn)生了任務隊列與事件循環(huán)词顾,來協(xié)調(diào)主線程與異步模塊之間的工作八秃。
事件循環(huán)的機制