Javascript語言的執行環境是單線程。即一次只能完成一個任務。如有多個任務則需排隊逐個執行——前一個任務完成,再執行後一個任務。 這種執行模式實現簡單,執行環境相對單純。但隨着前端業務日漸複雜,事務和請求等日漸增多,這種單線程執行方式在複雜的業務下勢必效率低下,只要有一個任務耗時很長,後面的任務都必須排隊等着,會拖延整個程序的執行。常見的瀏覽器無響應(假死),每每就是由於某一段Javascript代碼長時間運行(好比死循環),致使整個頁面卡在這個地方,其餘任務沒法執行。 爲避免和解決這種問題,JS語言將任務執行模式分爲異步和同步。同步模式」就是上一段的模式,後一個任務等待前一個任務結束,而後再執行,程序的執行順序與任務的排列順序是一致的、同步的;」異步模式」則徹底不一樣,每個任務有一個或多個回調函數(callback),前一個任務結束後,不是執行後一個任務,而是執行回調函數,後一個任務則是不等前一個任務結束就執行,因此程序的執行順序與任務的排列順序是不一致的、異步的。 「異步模式」很是重要。在瀏覽器端,耗時很長的操做都應該異步執行,避免瀏覽器失去響應,最好的例子就是Ajax操做。在服務器端,」異步模式」甚至是惟一的模式,由於執行環境是單線程的,若是容許同步執行全部http請求,服務器性能會急劇降低,很快就會失去響應。