0

在继续之前,我需要等待某个 ajax 请求完成。由于这个请求是从不同的锚点触发的,所以我将它包装在一个函数中。在第一个 ajax 函数完成后会发生第二个 ajax 请求。

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

我发现了一些关于 using 的示例,$.when但没有一个显示是否可以使用方法而不是 deferreds。

这是我想做的:

$.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吗?

4

2 回答 2

3

我们可以!像这样对你有用吗?

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

first().done(function(){
    //Im done
});
于 2013-10-08T07:19:09.583 回答
1

你可以做类似的事情 -

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

    });
});

查找有关$.ajax()用法的更多信息

于 2013-10-07T13:48:11.950 回答