首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

jQuery each 循環中順序執行 AJAX:async: false 同步模式與現代替代方案

     編輯:程式設計綜合問答

原代碼問題

$('#tbFileList').find(":checkbox:checked").each(function(){
    $.ajax({ url: "...", async: true, ... }); // 異步並發,無法保證順序
});

快速修復:同步 AJAX

$.ajax({
    async: false,  // 瀏覽器主線程阻塞,按順序執行
    success: function(){ ... }
});

缺點:阻塞 UI、Chrome 控制台警告「Synchronous XMLHttpRequest on the main thread is deprecated」,長請求導致頁面假死。

現代最佳實踐:Promise 序列 / async-await

const checkboxes = $('#tbFileList').find(":checkbox:checked").get();
(async () => {
    for (const cb of checkboxes) {
        const filename = $(cb).parents(".ckc").find('#lblname').text();
        const filepath = $(cb).parents(".ckc").find('#lblpath').text();
        await $.ajax({ url: "...", data: {filename, filepath}, method: "POST" });
        // 可選:更新 UI 進度
    }
    alert("全部完成");
})();
  • 非阻塞、可讀性強、易於錯誤處理(try/catch)。
  • 需項目引入支持 Promise 的 jQuery (≥3.0) 或使用 fetch。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved