ajax中的同步異步問題

下面以jquery中的ajax解釋一下同步和異步的區別:

可以先運行下面兩段代碼:

同步請求:

 

$.ajax({ 
	url: "http://jspang.com/DemoApi/typeGoods.php", 
	type:'post',
	async:false,
	success: function(){
        alert('2')
    }
});
alert('1')

在頁面上可以看到,先運行alert('2'),再運行alert('1')

 

異步請求:

$.ajax({ 
	url: "http://jspang.com/DemoApi/typeGoods.php", 
	type:'post',
	async:true,
	success: function(){
        alert('2')
    }
});
alert('1')

在頁面上可以看到,先運行alert('1'),再運行alert('2')

 

 

 

現在來解釋一下ajax中同步和異步的區別:

 

ajax中的同步是必須等服務器返回了結果後,纔會去執行success的方法,ajax的success方法沒有執行的情況下,ajax塊外面的js代碼是不執行的;
ajax中的異步是不需要等服務器返回了結果,就可以去執行ajax塊外面的js代碼,等服務器返回了結果後再執行success方法;

 

相信大家已經清楚了它們的區別。

再說一下使用場景:

 

驗證登陸一般都用同步ajax,如果我們是通過點擊按鈕的方式來進行驗證,那麼頁面的js代碼早都已經加載完畢了,點擊按鈕的時候再調用ajax請求,我們都不需要在請求接口的過程還運行其他js代碼,當然,如果真有這樣的需求,那麼就使用異步ajax;

 

那麼什麼時候用異步ajax呢?比如你想一進入某個頁面自動調用某個接口,你當然不想在請求接口的過程中阻塞其他js代碼的執行吧,那麼這時候就用異步ajax。

 

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