常會有不斷輪詢發送ajax請求,處理一些業務的場景。
要考慮到:
1. 服務器重啟,中斷,恢復后仍然能恢復正常業務處理。
服務器重啟過程中,再次發送請求,請求狀態將變為net::ERR_CONNECTION_REFUSED,ajax依然會執行到success邏輯層,拿到的響應是null。
想當然的認為ajax會執行到error邏輯層是不正確的,因此寫代碼的時候要格外注意這一點。
1 var progress_polling_ajax = function () { 2 var time_interval = 3000; 3 4 jQuery.ajax({ 5 url: "/system/ajax_get_progress/", 6 method: "POST" 7 dataType: "json", 8 success: function (data) { 9 try { 10 if (data) { 11 //業務處理 12 } else { 13 setTimeout(progress_polling_ajax, time_interval); 14 } 15 16 } catch (e) { 17 setTimeout(progress_polling_ajax, time_interval); 18 } 19 }, 20 error: { 21 setTimeout(progress_polling_ajax, time_interval); 22 } 23 24 }); 25 26 };
