單執行緒和非同步

2021-10-22 18:45:23 字數 629 閱讀 1097

非同步 async 是相對於同步 async 而言的,同步就是一件事一件事的執行。只有前乙個任務執行完畢,才能執行後乙個任務。

當js解析執行時,會被引擎分為兩類任務,同步任務(synchronous) 和 非同步任務(asynchronous)。

對於同步任務來說,會被推到執行棧按順序去執行這些任務。

對於非同步任務來說,當其可以被執行時,會被放到乙個 任務佇列 裡等待js引擎去執行。

當執行棧中的所有同步任務完成後,js引擎才會去任務佇列裡檢視是否有任務存在,並將任務放到執行棧中去執行,執行完了又會去任務佇列裡檢視是否有已經可以執行的任務。這種迴圈檢查的機制,就叫做事件迴圈。

指的是在主線程上排隊執行的任務,只有前乙個任務執行完畢,才能執行後乙個任務。

指的是不進入主線程,某個非同步任務可以執行了,該任務才會進入主線程執行。

**1. 同步和非同步任務在不同的執行"場所",同步的進入主線程,非同步的進入event table執行並註冊函式。

主線程任務——>微任務——>巨集任務

如果巨集任務裡還有微任就繼續執行巨集任務裡的微任務,如果巨集任務中的微任務中還有巨集任務就在依次進行

非同步和單執行緒

什麼是非同步 對比同步 非同步 不會有阻塞 console.log 100 settimeout function 1000 console.log 300 同步 會阻塞,需要等待確認後才會繼續執行 console.log 100 alert 200 console.log 300 前端使用非同步的...

js 單執行緒 非同步

執行緒與程序 程序是系統資源分配和排程的單元。乙個執行著的程式就對應乙個程序。在windows中,每乙個開啟的執行的應用程式或後台程式,比如執行中的qq,谷歌瀏覽器,網易雲 資源管理器等都是乙個程序。乙個程序包括了執行中的程式和程式所使用到的記憶體和系統資源。比如,邊聽 邊在寫部落格,這 就是開了兩...

JS非同步和單執行緒舉例

js 需要非同步的根本原因是 js 是單執行緒運 的,即在同 時間只能做 件事,不能 個 ajax 請求由於 絡 較慢,請求需要 5 秒鐘。如果是同步,這 5 秒鐘 就卡死在這 啥也做不了了。非同步的話,就好很多了,5 秒等待就等待了,其他事情不耽誤做,於那 5 秒鐘等待是 速太慢,不是因為 js ...