首页 > 解决方案 > 在 for 循环中运行的 AJAX - for 循环后的回调函数

问题描述

所以我有一个在 for 循环中执行 ajax 调用的函数。当整个 for 循环完成时,我需要回调另一个函数。由于 ajax 调用是异步运行的,所以一旦 for 循环完成,我就无法调用下一个函数。
这是我的代码:

for(let i=0; i< industryArray.length; i++){
        $.ajax({
            url: myurl + "_api/web/lists/GetByTitle('library')/items",
            method: "GET",
            headers: { "Accept": "application/json; odata=verbose" },
            success: function (data) {
                RejectedSalesCount += data.d.results.length;
            },
            error: function (data) {
            }
        })
}

// Need to call myfunction() here

myfunction()甚至在执行 ajax 调用之前就被调用。谢谢!

标签: javascriptjqueryajaxrestsharepoint

解决方案


var pendingRequests=0;
for(let i=0; i< industryArray.length; i++){
    if (condition) {
        pendingRequests++;
        $.ajax({
            url: myurl + "_api/web/lists/GetByTitle('library')/items",
            method: "GET",
            headers: { "Accept": "application/json; odata=verbose" },
            success: function (data) {
                RejectedSalesCount += data.d.results.length;
                pendingRequests--;
                if(pendingRequests===0) {
                    otherFunction()
                }
            },
            error: function (data) {
              doSomethingWithError(data)
            }
        })
     }
}

推荐阅读