1. 程式人生 > >setTimeout的異步傳輸機制

setTimeout的異步傳輸機制

分享 按順序 settime cnblogs 異步傳輸 傳輸 img set 是否

setTimeout是異步的,在設置完setTimeout後,指定代碼會在設定的時間後加入到任務隊列,但並不是立即執行,js是單線程語言,所有的代碼按順序執行,即同步執行,同步執行的代碼放在執行隊列中,而異步執行的setTimeout放在任務隊列中,執行順序是先執行完執行隊列中的代碼再去查看任務隊列中是否有要執行的代碼

技術分享

這段代碼看上去好像4應該比5先打印出來,但實際上是先打印出5再打印出4:

技術分享

就如上面所說的,1,3,5都放在執行隊列中,而4,2放在任務隊列中,所以4,2要等執行隊列中的1,3,5執行完後再按它們設定的時間順序執行,setTimeout所設定的時間是相對於主程序執行結束的時間

,並不是一個絕對的值。

setTimeout的異步傳輸機制