非同步

術語非同步指的是兩個或多個物件或事件不同時存在或發生,也就是說,它們同步的。當多個相關的事情發生時,如果它們之間沒有任何一個依賴於之前事情的完成,那麼它們就是非同步的。

在計算中,“非同步”一詞主要用於以下兩種語境。

在網路和通訊中

非同步通訊是一種交換訊息的方法,其中每條訊息的傳送、接收和處理不依賴於其他訊息的傳送、接收或處理。在非同步通訊中,各方在方便或可能的時候接收和處理訊息,而不是在收到訊息後立即進行。此外,訊息可以不等待確認就傳送,其理解是如果發生問題,接收方會請求更正或以其他方式處理情況。

電子郵件是一種非同步的人際通訊。發件人傳送電子郵件。收件人根據自己的方便(不一定是立即)閱讀電子郵件並回復(或不回覆)。各方可以隨時繼續傳送和接收訊息。電子郵件不必按特定順序安排。

在非同步軟體中,發出請求(例如向伺服器發出請求)不會在等待響應時阻塞其他程序。軟體可以繼續執行其他任務。例如,在基於 Promise 的 API 中,針對長時間操作建立了Promise 物件。操作完成後,Promise 會被處理。有了 Promise,軟體就不必等待操作完成。

在軟體設計中

非同步軟體設計透過構建程式碼來擴充套件這一概念,該程式碼允許程式要求與原始任務(或多個任務)並行執行某個任務,而無需停止等待該任務完成。當次要任務完成時,原始任務會透過約定的機制收到通知,從而知道工作已完成,並且結果(如果有)可用。

有許多程式設計技術可以實現非同步軟體。請參閱文章非同步 JavaScript 以瞭解它們的介紹。

另見