jquery - 推迟执行函数,直到发生其他事件

时间:2012-07-26 16:47:06

标签: jquery jquery-deferred

我有几个ajax请求可以获取一些数据:

$.ajax({
    url: '/bin/MVC/Reporting/GetReportTemplates',
    type: "GET",
    success: function (data) {
        reportingMetaData.ReportTemplates = data.Data;
    }
});

$.ajax({
    url: '/bin/MVC/Reporting/GetReportTopTypes',
    type: "GET",
    success: function (data) {
        reportingMetaData.ReportTopTypes = data.Data;
    }
}

这些已经返回后,我想再运行一个功能。

我知道jquery延迟,但我从未使用它,并且不确定如何在这个实例中应用它。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

var a1 = $.ajax({
    url: '/bin/MVC/Reporting/GetReportTemplates',
    type: "GET"
});
var a2 = $.ajax({
    url: '/bin/MVC/Reporting/GetReportTopTypes',
    type: "GET"
});
$.when(a1, a2).then(function() {
    //Both ajax requests have completed successfully
});

答案 1 :(得分:3)

您需要$.when()

var req_1 = $.ajax({...});
var req_2 = $.ajax({...});
$.when(req_1, req_2).done(function(response_1, response_2) {
    //do something here when both requests done
});

值得指出的是,$.when()可以将延迟的OR NON延迟对象作为参数。这意味着它可以在请求可以是同步或异步的情况下起作用。如果您碰巧在英国,我在.NET杂志上发表的一篇文章将更详细地介绍这一点。