jquery - 是否可以在for循环语句下完成所有ajax调用后运行代码?

标签 jquery ajax each

我有一个for循环语句,每个循环都会执行一个ajax调用。

$.each(arr, function(i, v) {
    var url = '/xml.php?id=' + v;
    $.ajax({
        url: url,
        type: 'GET',
        dataType: 'xml',
        success: function(xml) {
            if ($(xml).find('Lists').attr('total') == 1) {
                // some code here
            }
        },
        complete: function() {
            // some code here
        }
    })
})

我想在循环下所有 ajax 调用完成后运行代码,我尝试将下面的代码放在最后一行,当 ajax 调用完成时它不会执行

    if (i == arr.length - 1) {
        // some code here
    }

因此,如果我有10次循环,就有10次ajax调用。我想在 10 次 ajax 调用完成后运行代码,有什么想法吗?

使用.ajaxComplete()还是.done()来实现更好?

谢谢

最佳答案

尝试使用$.when()

var arr = [];
$.each(arr, function(i, v) {
    var url = '/xml.php?id=' + v;
    var xhr = $.ajax({
        url: url,
        type: 'GET',
        dataType: 'xml',
        success: function(xml) {
            if ($(xml).find('Lists').attr('total') == 1) {
                // some code here
            }
        },
        complete: function() {
            // some code here
        }
    });
    arr.push(xhr);
})

$.when.apply($, arr).then(function(){
    console.log('do')
})

关于jquery - 是否可以在for循环语句下完成所有ajax调用后运行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16956116/

相关文章:

jquery - 从另一个下拉列表中选择一个选项时填充下拉列表 Laravel

javascript - jquery.form.js 中的 .ajaxSubmit 不使用数据选项

jQueryeach只影响最后一个元素

jquery - 难以从 HTML 字符串中查找特定 Span 的内部文本

javascript - jQuery 每个 : If element is first-child else

javascript - 未捕获的 ReferenceError : do_login is not defined at HTMLButtonElement. onclick

jquery - 使用 jQuery 将 CSS 应用于 div,仅当它出现在屏幕上时

javascript - 在 jQuery 中使用参数调用 JSF 托管 bean 方法

jquery - 淡出图像然后更改源并再次更改图像淡入淡出

php - Javascript 警报返回值/事件