日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ajax中什么时候用同步,什么时候用异步?

發布時間:2024/6/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ajax中什么时候用同步,什么时候用异步? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行;

$.ajax({?

??????? type: "post",?

?????? url: "path",?

?????? cache:false,?

???????async:false,?

??????? dataType: ($.browser.msie) ? "text" : "xml",?

???????? success: function(xmlobj){?

? ? ? ? ? ? ? ? ? ? ? function1(){};

??????? }?

});

?function2(){};


默認情況下async是true

一.什么是同步請求:(false)

? ?? ? 同步請求即是當前發出請求后,瀏覽器什么都不能做,必須得等到請求完成返回數據之后,才會執行后續的代碼,相當于是排隊,前一個人辦理完自己的事務,下一個人才能接著辦。也就是說,當JS代碼加載到當前AJAX的時候會把頁面里所有的代碼停止加載,頁面處于一個假死狀態,當這個AJAX執行完畢后才會繼續運行其他代碼頁面解除假死狀態(即當ajax返回數據后,才執行后面的function2)。?

二.什么是異步請求:(true)
? ?? ? 異步請求就當發出請求的同時,瀏覽器可以繼續做任何事,Ajax發送請求并不會影響頁面的加載與用戶的操作,相當于是在兩條線上,各走各的,互不影響。

一般默認值為true,異步。異步請求可以完全不影響用戶的體驗效果,無論請求的時間長或者短,用戶都在專心的操作頁面的其他內容,并不會有等待的感覺。


下面來區別一下同步和異步有什么不同:

異步:在異步模式下,當我們使用AJAX發送完請求后,可能還有代碼需要執行。這個時候可能由于種種原因導致服務器還沒有響應我們的請求,但是因為我們采用了異步執行方式,所有包含AJAX請求代碼的函數中的剩余代碼將繼續執行。如果我們是將請求結果交由另外一個JS函數去處理的,那么,這個時候就好比兩條線程同時執行一樣。

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



有人說:既然異步這么好,那全部都用異步好了,同步存在還有什么意義?

?那么,同步適用于一些什么情況呢?

? ?? ? 我們可以想一下,同步是一步一步來操作,等待請求返回的數據,再執行下一步,那么一定會有一些情況,只有這一步執行完,拿到數據,通過獲取到這一步的數據來執行下一步的操作。這是異步沒有辦法實現的,因此同步的存在一定有他存在的道理。


如何選擇同步還是異步模式?要回答這一問題,我們可以通過下面可能出現的問題來回答:

我們在發送AJAX請求后,還需要繼續處理服務器的響應結果,如果這時我們使用異步請求模式同時未將結果的處理交由另一個JS函數進行處理。這時就有可能發生這種情況:異步請求的響應還沒有到達,函數已經執行完了return語句了,這時將導致return的結果為空字符串

總結

以上是生活随笔為你收集整理的Ajax中什么时候用同步,什么时候用异步?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。