使用$ .when等待ajax完成

时间:2013-10-07 13:41:23

标签: jquery .when

我需要等待某个ajax请求完成才能继续。由于此请求是从不同的锚点触发的,因此我将其包装在函数中。 第一个ajax的函数完成后会发生什么,是第二个ajax请求。

起初,我试图等待第一个完成使用$.ajaxComplete(),因为之后执行了第二个ajax请求而遇到无限循环。

我找到了一些关于使用$.when的示例,但没有一个显示是否可以使用方法而不是延迟。

这是我想做的事情:

$.when( functionFirstAjaxCall(data) ).then( function() {
    // after first ajax request has finished, do the following:
    $.ajax({
        //...
    });
});

functionFirstAjaxCall()是否需要具有特定的返回值,或者我如何才能使这个值有效?顺便说一句,该解决方案不需要使用$.when

更新:我通过创建Vandesh建议的自定义事件来实现它。

function first() {
    $.ajax({
        // ...
        success: function (d) {
            $.event.trigger({
                type: "finished",
                data: d
            });
         }
    });
}

$(document).on('finished', second());

无论如何,使用$.when会有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:3)

是的,我们可以!为你做这样的工作?

function first() {
    var a = $.ajax({
        // ...
    });
    return a.promise();
}

first().done(function(){
    //Im done
});

答案 1 :(得分:1)

你可以做类似的事情 -

$.ajax({// First AJAX call
    url: ""
}).done(function() {
    $.ajax({//Second AJAX call on completion of first
        url: ""
    }).done(function() {

    });
});

详细了解$.ajax()

的使用情况