ajax的同步和異步有怎樣的區別?ajax同步與異步的區別介紹

ajax的同步和異步有怎樣的區別?ajax同步與異步的區別介紹

對於ajax我們應該知道ajax是主要用來在前端頁面中向服務器後端請求數據,ajax中根據async的值不同分爲同步(async = false)和異步(async = true)兩種執行方式,那麼,ajax的同步和異步請求兩種方式有什麼區別呢?本篇文章就來給大家詳細分析一下ajax同步與異步執行的區別。

首先我們來分別看一下ajax同步與異步請求是什麼?

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請求代碼的函數中的剩餘代碼將繼續執行。如果我們是將請求結果交由另外一個JS函數去處理的,那麼,這個時候就好比兩條線程同時執行一樣。

同步模式下:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章