javascript - 多个 ajax 和非 ajax 函数后的回调

标签 javascript jquery ajax asynchronous callback

我正在学习在两个函数的成功结果后执行回调,其中一个是 ajax,一个是非 ajax(两者都是异步的)。在我的脚本中,有一个非 ajax 调用用于在程序开始时加载多个图像,还有一个 ajax (JQuery) 调用用于请求包含脚本中变量数据的 JSON。我发现了 JQuery 的 when() 函数用于进行多个 ajax 调用,我还发现了 this answer在回调之前发出多个请求,这可能是可破解的。我正在追逐这个并寻找一些关于是否或如何使函数在多个混合函数之后执行回调的建议。提前感谢您的想法!

最佳答案

$.when实际上会接受多个延迟对象,所以你可以这样做:

var xhr = ajax();
var images_promise = loadImages();

$.when.apply($, [xhr, images_promise]).done(function () {
    // something to do when both are complete
});

假设 ajaxloadImages 函数返回 promise 对象:

function ajax() { 
    return $.ajax({
        // ajax configuration
    });
}

function loadImages() { 
    // create the deferred promise object
    var dfd = new jQuery.Deferred();
    $("img").on('load', function() { 
        // on the load event resolve the promise
        dfd.resolve();
    });
    return dfd;
}

阅读有关延期 promise 的更多信息 here

关于javascript - 多个 ajax 和非 ajax 函数后的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23085889/

相关文章:

javascript - 如何让 RxJS 在下一个反跳结束之前取消已反跳的 http 调用?

jquery - ASP.NET MVC 在页面加载后进行ajax 调用?

javascript - 使用 AJAX 发布帖子后返回一个值,以便在其他代码中使用该值

javascript - 如何在Javascript中建立相互递归结构?

javascript - 使div在单击时上下移动

javascript - toggle ("slide", {direction : "right"}, 5000) parent div问题的高度

javascript - 简单的 jquery 包装器不能完全工作

javascript - 使用 jQuery 或 jQTouch 的幻灯片转换脚本

javascript - ajax 调用后从 Javascript 模块返回值

javascript - 如何在 ASP.NET Datagrid 中使用 Jquery 附加到下拉列表?