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是單線程的,只能執行完一個指令後執行下一個,可是也不能由於其中的某一項暫時沒法執行(異步事件)而阻塞後續事件執行
所以,這裏的異步事件會暫存起來,符合條件後再執行(時間、回調成功、事件觸發等)