首頁 web前端 前端問答 ajax同步和非同步的差別是什麼

ajax同步和非同步的差別是什麼

Jan 13, 2022 pm 05:47 PM
ajax 同步 非同步

區別:1、同步中一個執行緒要等待上一個執行緒執行完才能開始執行,而非同步中一個執行緒在執行中,下一個執行緒不必等待它執行完就可以開始執行;2、同步是單執行緒操作,而非同步是多執行緒操作;3、非同步的效率要高於同步。

ajax同步和非同步的差別是什麼

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

ajax非同步請求:

非同步請求就當發出請求的同時,瀏覽器可以繼續做任何事,Ajax發送請求並不會影響頁面的載入與用戶的操作,相當於是在兩條線上,各走各的,互不影響。一般預設值為true。非同步請求可以完全不影響使用者的體驗效果,無論請求的時間長或短,使用者都在專心的操作頁面的其他內容,並不會有等待的感覺。

例如:

$.ajax({ 
     type:"POST",
     url:"Venue.aspx?act=init",
      dataType:"html",
     success:function(result){  //function1()
       f1();
       f2(); 
    }
     failure:function (result) { 
      alert('Failed'); 
     },
 }
 function2();
登入後複製

說明:上述程式碼中,當ajax區塊發出請求後,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前台會去執行function2()。

ajax同步請求:

同步請求即是目前發出請求後,瀏覽器什麼都不能做,必須等到請求完成回傳資料之後,才會執行後續的程式碼,相當於是排隊,也就是說,當JS程式碼載入到目前ajax的時候會把頁面裡所有的程式碼停止載入,頁面處於一個假死狀態,當這個ajax執行完畢後才會繼續運行其他程式碼頁面解除假死狀態(即當ajax回傳資料後,才執行後面的function)。

例如:

$.ajax({ 
     type:"POST",
     url:"Venue.aspx?act=init",
     dataType:"html",
     async: false,    success:function(result){  //function1()
       f1();
       f2();
     }
    failure:function (result) { 
      alert('Failed'); 
     },
 }
 function2();
登入後複製

說明:上述程式碼中,當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax區塊發出請求後,他會等待在function1()這個地方,不會去執行function2(),直到function1()部分執行完成。

看完了對於ajax同步與非同步請求的意思後,我們就來看看ajax同步請求與非同步請求的差異。

ajax同步請求與非同步請求的區別:

同步是指一個執行緒要等待上一個執行緒執行完才能開始執行,同步可以看做是一個單線程操作,只要客戶端請求了,在伺服器沒有回饋訊息之前是一個線程阻塞狀態。

非同步是一個執行緒在執行中,下一個執行緒不必等待它執行完就可以開始執行。異步肯定是個多線程。在客戶端請求時,可以執行其他線程,並且在把這個線程存放在他的隊列裡面,有序的執行。

非同步的效率要高於同步。如果資料在線程間共享,那麼必須使用同步!

非同步模式下:

當我們使用AJAX傳送完請求後,可能還有程式碼需要執行。這時候可能因為種種原因導致伺服器還沒有回應我們的請求,但是因為我們採用了非同步執行方式,所有包含AJAX請求程式碼的函數中的剩餘程式碼將繼續執行。如果我們是將請求結果交由另一個JS函數去處理的,那麼,這個時候就好比兩個執行緒同時執行一樣。

同步模式下:

當我們使用AJAX發送完請求後,後續還有程式碼需要執行,我們同樣將伺服器回應交由另一個JS函數去處理,但這時的程式碼執行情況是:在伺服器沒有回應或處理回應結果的JS函數還沒有處理完成return時,包含請求程式碼的函數的剩餘程式碼是不能夠執行的。就好比單線程一樣,請求發出後就進入阻塞狀態,知道接觸阻塞剩下的程式碼才會繼續執行。

【相關教學推薦:AJAX影片教學

以上是ajax同步和非同步的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

您同步的資料夾中的一個或多個項目不符合Outlook錯誤 您同步的資料夾中的一個或多個項目不符合Outlook錯誤 Mar 18, 2024 am 09:46 AM

當您在您的同步資料夾中發現一個或多個項目與Outlook中的錯誤訊息不符時,這可能是因為您更新或取消了會議項目。在這種情況下,您會看到一條錯誤訊息,提示您的本機資料版本與遠端副本有衝突。這種情況通常發生在Outlook桌面應用程式中。您同步的資料夾中的一個或多個項目不符。若要解決衝突,請開啟這些項目,然後重試此操作。修復同步的資料夾中的一個或多個項目不符合Outlook錯誤在Outlook桌面版中,當本機行事曆項目與伺服器副本發生衝突時,可能會遇到問題。不過,幸運的是,有一些簡單的方法可以幫助您

解決jQuery AJAX請求遇到403錯誤的方法 解決jQuery AJAX請求遇到403錯誤的方法 Feb 20, 2024 am 10:07 AM

標題:解決jQueryAJAX請求出現403錯誤的方法及程式碼範例403錯誤是指伺服器禁止存取資源的請求,通常會導致出現這個錯誤的原因是請求缺少權限或被伺服器拒絕。在進行jQueryAJAX請求時,有時會遇到這種情況,本文將介紹如何解決這個問題,並提供程式碼範例。解決方法:檢查權限:首先要確保請求的URL位址是正確的,同時驗證是否有足夠的權限來存取該資

PHP 與 Ajax:建立一個自動完成建議引擎 PHP 與 Ajax:建立一個自動完成建議引擎 Jun 02, 2024 pm 08:39 PM

使用PHP和Ajax建置自動完成建議引擎:伺服器端腳本:處理Ajax請求並傳回建議(autocomplete.php)。客戶端腳本:發送Ajax請求並顯示建議(autocomplete.js)。實戰案例:在HTML頁面中包含腳本並指定search-input元素識別碼。

解決jQuery AJAX請求403錯誤的方法 解決jQuery AJAX請求403錯誤的方法 Feb 19, 2024 pm 05:55 PM

jQuery是一個受歡迎的JavaScript函式庫,用來簡化客戶端端的開發。而AJAX則是在不重新載入整個網頁的情況下,透過發送非同步請求和與伺服器互動的技術。然而在使用jQuery進行AJAX請求時,有時會遇到403錯誤。 403錯誤通常是伺服器禁止存取的錯誤,可能是由於安全性原則或權限問題導致的。在本文中,我們將討論如何解決jQueryAJAX請求遭遇403錯誤

如何解決jQuery AJAX報錯403的問題? 如何解決jQuery AJAX報錯403的問題? Feb 23, 2024 pm 04:27 PM

如何解決jQueryAJAX報錯403的問題?在開發網頁應用程式時,經常會使用jQuery來發送非同步請求。然而,有時在使用jQueryAJAX時可能會遇到錯誤代碼403,表示伺服器禁止存取。這種情況通常是由伺服器端的安全性設定所導致的,但可以透過一些方法來解決這個問題。本文將介紹如何解決jQueryAJAX報錯403的問題,並提供具體的程式碼範例。一、使

如何使用Ajax從PHP方法取得變數? 如何使用Ajax從PHP方法取得變數? Mar 09, 2024 pm 05:36 PM

使用Ajax從PHP方法取得變數是Web開發中常見的場景,透過Ajax可以實作頁面無需刷新即可動態取得資料。在本文中,將介紹如何使用Ajax從PHP方法中取得變量,並提供具體的程式碼範例。首先,我們需要寫一個PHP檔案來處理Ajax請求,並傳回所需的變數。下面是一個簡單的PHP檔案getData.php的範例程式碼:

Python asyncio 進階指南:從初學者到專家 Python asyncio 進階指南:從初學者到專家 Mar 04, 2024 am 09:43 AM

並發和非同步編程並發編程處理同時執行的多個任務,非同步編程是一種並發編程,其中任務不會阻塞線程。 asyncio是python中用於非同步程式設計的函式庫,它允許程式在不阻塞主執行緒的情況下執行I/O操作。事件循環asyncio的核心是事件循環,它監控I/O事件並調度相應的任務。當一個協程準備好時,事件循環會執行它,直到它等待I/O操作。然後,它會暫停協程並繼續執行其他協程。協程協程是可暫停和恢復執行的函數。 asyncdef關鍵字用於建立協程。協程使用await關鍵字等待I/O作業完成。 asyncio的基礎以下

PHP 與 Ajax:建立動態載入內容的解決方案 PHP 與 Ajax:建立動態載入內容的解決方案 Jun 06, 2024 pm 01:12 PM

Ajax(非同步JavaScript和XML)允許在不重新載入頁面情況下新增動態內容。使用PHP和Ajax,您可以動態載入產品清單:HTML建立一個帶有容器元素的頁面,Ajax請求載入資料後將資料加入到該元素中。 JavaScript使用Ajax透過XMLHttpRequest向伺服器傳送請求,從伺服器取得JSON格式的產品資料。 PHP使用MySQL從資料庫查詢產品數據,並將其編碼為JSON格式。 JavaScript解析JSON數據,並將其顯示在頁面容器中。點選按鈕觸發Ajax請求,載入產品清單。

See all articles