# 1.2.1.10.關於非同步回呼

* 非同步 (Asynchronous)
  * 在一個時間點不只一段程式碼執行
* The browser
  *   JavaScript engine裡面的等待列稱為Event queue

      * 存放可能要發生的事件, 事件通知
      * 當有一個需要被通知的物件在JavaScript engine的某處, 會被放到queue, 我們就可以監聽這個事件 然後用函式回應
      * 舉例來說, 如果有一個按鈕按下去後, **當執行堆是空的時候, JavaScript才會注意到event queue**, 如果有函數對應到這個事件, 他會看這個函數是否可被此事件觸發, **如果可以則會建立新的Execution context給此函數**
        * 1.長時間執行的函式會干擾事件
        * 2.依照事件發生的順序處理
        * 3.**這是發生在JavaScript engine之外的非同步**

      ![](https://3195929128-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8GO2MkGtHfarAf%2F-M4M0IHoyFvfGKjf7P-T%2F-M4M0Mx6ZeBDaxrpeFYK%2F23425345.jpg?generation=1586302921159184\&alt=media) ![](https://3195929128-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8GO2MkGtHfarAf%2F-M4M0IHoyFvfGKjf7P-T%2F-M4M0Mx88ThF0junOoUs%2F2342534511.jpg?generation=1586302921149384\&alt=media)
  * Rendering engine
  * HTTP request&#x20;
