AJAX中同步和非同步的區別和使用場景

2022-06-01 23:06:11 字數 1280 閱讀 1130

一、簡介

ajax請求最重要的問題是**執行的順序。最長遇到的問題是,我們定義乙個變數接收ajax非同步請求的返回結果,後續**使用,然而後續**在使用時該變數為初始值,始終得不到想要的結果!!!

二、示例

// 非同步

var email = "[email protected]";

console.log(1);

jquery.ajax(

});console.log(3);

// 結果:1->3->2

// 同步

var email = "[email protected]";

console.log(1);

jquery.ajax(

});console.log(3);

// 結果:1->2->3

三、官方解釋

by default, all requests are sent asynchronously (i.e. this is set to true by default). if you need synchronous requests, set this option to false.cross-domain requests and datatype: "jsonp" requests do not support synchronous operation. note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.

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

下面來區別一下同步和非同步有什麼不同:

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

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

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

ajax中同步和非同步的區別

普通的b s模式就是同步,而ajax技術就是非同步,當然xmlhttpreques有同步的選項。同步 提交請求 等待伺服器處理 處理完畢返回。這個期間客戶端瀏覽器不能幹任何事。非同步 請求通過事件觸發 伺服器處理 這是瀏覽器仍然可以作其他事情 處理完畢。舉個生動的例子吧 同步就是你叫我去吃飯,我聽到...

ajax 同步和非同步區別?

ajax 同步和非同步區別?我們在使用 ajax 一般都會使用非同步處理。非同步處理呢就是我們通過事件觸發到 ajax,請求伺服器,在這個期間無論伺服器有沒有響應,客戶端的其他 一樣可以執行。同步處理 我們通過實踐觸發 ajax,請求伺服器,在這個期間等待伺服器處理請求,在這個期間客戶端不能做任何處...

ajax同步和非同步區別

我們在使用 ajax 一般都會使用非同步處理。非同步處理呢就是我們通過事件觸發到 ajax,請求伺服器,在這個期間無論伺服器有沒有響應,客戶端的其他 一樣可以執行。同步處理 我們通過實踐觸發 ajax,請求伺服器,在這個期間等待伺服器處理請求,在這個期間客戶端不能做任何處理。當 ajax 執行完畢才...