前端發送Ajax請求到服務器,服務器返回數據這一過程,因原因不同耗時長短也有差別,且這段時間內頁面顯示空白。如何優化這段時間內的交互體驗,以及長時間內服務器仍未返回數據這一問題,是我們開發中不容忽視的重點。
常見的做法是:
1、設置超時時間,一旦時間超過設定值,便終止請求;
2、頁面內容加載之前,手動增加一個 loading 層。
代碼如下:
getAjax: function (method, apiUrl, options, callback) { var xhr = $.ajax({ type: method, url: apiUrl, data: options, timeout: 5000, // 設置超時時間 dataType: "json", beforeSend: function (xhr) { $.showLoading(); // 數據加載成功之前,使用loading組件 }, success: function(json) { $.hideLoading(); // 成功后,隱藏loading組件 if(callback && callback instanceof Function === "true") { callback(json); } }, error: function (textStatus) { console.error(textStatus); }, complete: function (XMLHttpRequest,status) { if(status == 'timeout') { xhr.abort(); // 超時后中斷請求 $.alert("網絡超時,請刷新", function () { location.reload(); }) } } }) }
