異步&單線程

題目(答案見每題下方空白處)

  1.同步和異步的區別?分別舉一個同步和異步的例子前端

  同步會阻塞代碼的執行,而異步則不會ajax

  alert函數就是同步的指令,而setTimeout爲異步指令網絡

  2.setTimeout相關的筆試題異步

  

  執行結果爲:135,以後是2,1秒後打印4函數

  3.前端使用異步的場景有哪些spa

  1.定時任務:setTimeout、setInterval線程

  2.網絡請求:ajax請求、動態img加載blog

  3.事件綁定進程

  三者都須要等待,由於單線程的JS若是不添加異步機制,則必須執行完一個事件才能夠執行下一個事件,阻塞了進程事件

知識點

異步

  異步能夠理解成在執行代碼期間,不阻塞進程,能夠執行其餘任務

  例以下方的代碼

  

  執行的結果爲100,300,200

  這裏的200按照JS的解析順序,應該在300以前,可是setTimeout是一個延時操做(異步),所以在這等待的1秒內,JS會執行下面其餘不用等待的命令,1s後回來執行這個命令

  而下面這個同步的代碼則執行結果不一樣

  

  執行時,先輸出100,再彈出200,直到咱們點擊了彈出框後,纔會彈出300

  這裏的alert和兩個輸出都是同步任務,只有執行完一個,纔會執行另外一個

使用場景

  1.定時任務:setTimeout、setInterval

  2.網絡請求:ajax請求、動態img加載

  3.事件綁定

單線程

  能夠理解成一次只能執行一件事,事項須要排隊進行

  因爲JS是單線程的,只能執行完一個指令後執行下一個,可是也不能由於其中的某一項暫時沒法執行(異步事件)而阻塞後續事件執行

  所以,這裏的異步事件會暫存起來,符合條件後再執行(時間、回調成功、事件觸發等)

相關文章
相關標籤/搜索