首頁 >web前端 >前端問答 >javascript異步是什麼意思

javascript異步是什麼意思

WBOY
WBOY原創
2022-01-19 11:45:534277瀏覽

在JavaScript中,非同步的意思是不依照程式碼順序執行,一個非同步過程的執行將不再與原有的序列有順序關係,程式的執行順序與任務的排列順序是不一致的,可以理解為非同步就是從主執行緒發射一個子執行緒來完成任務。

javascript異步是什麼意思

本教學操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript非同步是什麼意思

# 異步的概念

##異步(Asynchronous, async)是與同步(Synchronous, sync)相對的概念。

在我們學習的傳統單執行緒程式設計中,程式的運行是同步的(同步不意味著所有步驟同時運行,而是指步驟在一個控制流序列中按順序執行)。而非同步的概念則是不保證同步的概念,也就是說,一個非同步過程的執行將不再與原有的序列有順序關係。

簡單來理解就是:同步以你的程式碼順序執行,非同步不依照程式碼順序執行,非同步的執行效率更高。

以上是關於非同步的概念的解釋,接下來我們通俗地解釋一下非同步:非同步就是從主執行緒發射一個子執行緒來完成任務。

javascript異步是什麼意思

什麼時候用非同步程式設計

在前端程式設計(甚至後端有時也是這樣),我們在處理一些簡短、快速的操作時,例如計算1 1 的結果,往往在主執行緒就可以完成。主線程作為一個線程,不能夠同時接受多方面的請求。所以,當一個事件沒有結束時,介面將無法處理其他請求。

現在有一個按鈕,如果我們將它的 onclick 事件設定為一個死循環,那麼當這個按鈕按下,整個網頁將失去回應。

為了避免這種情況的發生,我們常常用子執行緒來完成一些可能消耗時間足夠長以至於被使用者察覺的事情,例如讀取一個大檔案或發出一個網路請求。因為子線程獨立於主線程,所以即使出現阻塞也不會影響主線程的運行。但是子線程有一個限制:一旦發射了以後就會與主線程失去同步,我們無法確定它的結束,如果結束之後需要處理一些事情,比如處理來自伺服器的信息,我們是無法將它合併到主線程中去的。

為了解決這個問題,JavaScript 中的非同步操作函數往往透過回呼函數來實現非同步任務的結果處理。

JS的非同步請求和非同步載入

非同步請求:發送方發出資料後,不等接收方發迴回應,接著發送下個資料包的通訊方式。

範例:當使用者填寫完一條訊息後,該訊息會自動向伺服器提交,然後伺服器回應客戶端,在此過程中,使用者仍在填寫表格的信息,即向伺服器請求多次,節省了用戶的時間,提高了用戶的體驗。

非同步載入:預設的js是同步載入的,(這裡的「載入」可以理解成是解析、執行)。非同步的JS就是指在載入這條JS程式碼的同時,繼續執行下面的js。

舉個例子:例如這段程式碼,

<script type="text/javascript" src=&#39;http://china-addthis.googlecode.com/svn/trunk/addthis.js&#39;></script>
<script type="text/javascript" src=&#39;http://libs.baidu.com/jquery/2.0.0/jquery.min.js&#39;></script>
<script type="text/javascript">
 console.log(&#39;hello world&#39;);
</script>

我們的要求似乎很簡單,能在頁面載入的同時,在控制台輸出字串即可,再講的通俗一點,就是在請求第一段Google提供的js的同時,繼續執行下面的js,也就是實作js的非同步載入。

相關推薦:

javascript學習教學
#

以上是javascript異步是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn