原文鏈接:https://www.cnblogs.com/zhaotiancheng/p/7428799.html
實際項目中,ajax可以說是非常、非常、非常 常用的。而ajax默認是 異步請求
而有的時候 ajax的異步卻不是特別的好用
//查詢當前餐桌類型下有多少個餐桌 function tableCount(tableTypeId){ var count = 0; $.ajax({ data:{ restaurantId:'${restaurantId}', businesstimeid:timeId, predetermine:$('#orderdate').datebox('getValue'), currentDate:parent.currentDate, theBsnssTimId:parent.theBsnssTimId, typeId:tableTypeId }, url:'${ctx}/cater/caterTable/selectByTimeAndDuetotype', dataType:"JSON", type:"POST", async:false, success:function(result){ count = result.length; } }); return count; }
調用這個方法時(方法的參數無視)
var count = tableCount(record.id); $('#booksTableCount').html(count+'桌');
這里我先貼上同步的代碼 ,然后我說一下 同步和異步的區別
async:false 這個屬性是同步請求,即在服務器返回值之前不再加載下面的代碼,默認值為true(不寫的時候為true異步請求)
當我沒有寫async:false的時候, 這個方法返回的值為0 因為 方法還沒有返回值的時候 下方代碼已經加載完 那么count 有個默認值是0 :
未返回值,下面的方法便開始執行了,所以會顯示成0
當加上async:false的時候,代碼不再繼續加載,等到服務器返回值之后才繼續走,即走了success之后 才繼續執行下面的代碼 才有返回值
什么時候返回值,才會繼續加載其他代碼