ajax同步和非同步

2021-08-19 17:46:17 字數 1070 閱讀 2880

之前一直在寫jquery**的時候遇到ajax載入資料都需要考慮**執行順序問題。最近的專案用了到ajax同步。這個同步的意思是當js**載入到當前ajax的時候會把頁面裡所有的**停止載入,頁面出去假死狀態,當這個ajax執行完畢後才會繼續執行其他**頁面假死狀態解除。 

而非同步則這個ajax**執行中的時候其他**一樣可以執行。 

jquery的async:false,這個屬性 

預設是true:非同步,false:同步。

$.ajax( 

});有了這個屬性可以相對的減少**執行書序問題,但是如果用的太多,頁面假死次數太多。這樣反而導致使用者體驗不佳~!

$.ajax()中 async 和success的官方的解釋:

非同步的布林

預設值:真

預設情況下,所有請求都是非同步傳送的(例如預設情況下設定為true)。如果需要同步請求,請將此選項設定為false。注意,同步請求可以臨時鎖定瀏覽器,在請求啟用時禁用任何操作。

成功功能

如果請求成功,則呼叫乙個函式。函式傳遞兩個引數:從伺服器返回的資料,根據「data」引數格式化,以及描述狀態的字串。這是乙個ajax事件。

在這裡,async預設的設定值為true,這種情況為非同步方式,就是說當ajax傳送請求後,在等待server端返回的這個過程中,前台會繼續 執行ajax塊後面的指令碼,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個執行緒,ajax塊發出請求後乙個執行緒 和ajax塊後面的指令碼(另乙個執行緒)例:

$.ajax( 

failure:function (result) , 

} function2(); 

在上例中,當ajax塊發出請求後,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前台會去執行function2(),也就是說,在這個時候出現兩個執行緒,我們這裡暫且說為function1() 和function2()。

當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求後,他會等待在function1()這個地方,不會去執行function2(),知道function1()部分執行完畢。

ajax同步和非同步

之前一直在寫jquery 的時候遇到ajax載入資料都需要考慮 執行順序問題。最近的專案用了到ajax同步。這個同步的意思是當js 載入到當前ajax的時候會把頁面裡所有的 停止載入,頁面出去假死狀態,當這個ajax執行完畢後才會繼續執行其他 頁面假死狀態解除。而非同步則這個ajax 執行中的時候其...

AJax同步和非同步

當用 ajax 非同步請求的時候,如果你的資料依賴於另乙個ajax請求之後的結果,可能會導致程式執行過快使資料在達不到預期值。表現為只有debug或者在比較卡頓的情況下才能執行正常,這個時候我們可能需要將被依賴的請求設定為同步的,即 async false下面附上我出現問題的 function ge...

ajax同步和非同步

同步 等待上乙個程序執行完開始執行這乙個 同步的執行效率比較低,比較耗時間,但有利於對流程進行管理。非同步的執行效率比較高,節省時間,但是會占用更多的資源,不利於對流程進行控制。前端多使用非同步操作,後端多使用同步操作。同步 瀏覽器訪問伺服器請求,使用者看得見頁面重新整理,重新發請求,等請求完,頁面...