javascript - 多次ajax调用后执行函数

标签 javascript jquery ajax rest .when

我想在多个 ajax 调用完成时触发一个函数。 经过一些研究,我发现了 jquery $.when 函数。 我测试了这个功能,但它不起作用。 有人知道如何解决这个问题吗?

var root = 'http://jsonplaceholder.typicode.com';

$(function(){
    restCall.ajaxcalls();
})

var restCall =
{
    ajaxcalls: function(){
        $.when(this.getAlbums(), this.getPhotos()).done(function(fetchedAlbums,fetchedPhotos){
            console.log(fetchedAlbums);
            console.log(fetchedPhotos);
        });
    },

    getAlbums:function() {
        $.ajax({
            type: 'GET',
            url: root + '/albums'
        }).done(function(response){
            return response;
        }).fail(this.ajaxFail);
    },

    getPhotos: function(){
        $.ajax({
            type: 'GET',
            url: root + '/photos'
        }).done(function(response){
            return response;
        }).fail(this.ajaxFail);
    },

     ajaxFail: function(xhr,message,error){
        console.log("het liep mis met de ajax call",xhr,message,error);
    }
};

控制台日志返回未定义,但我想要通过 ajax 调用获取的对象。

有人知道哪里出了问题吗?

最佳答案

您永远不应该尝试在 .done() 处理程序中返回一个值,因为它是一个异步调用。相反,返回由您的 ajax 调用返回的 promise ,并像这样在该结果上使用您的 $.when():

getAlbums: function() {
    return $.ajax({
        type: 'GET',
        url: root + '/albums'
    }).fail(this.ajaxFail);
},
getPhotos: function(){
    return $.ajax({
        type: 'GET',
        url: root + '/photos'
    }).fail(this.ajaxFail);
}

关于javascript - 多次ajax调用后执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34007638/

相关文章:

Javascript:过滤具有重复日期的数组

javascript - AJAX 请求返回带有属性的 JSON,而不是整个字符串作为一个值

javascript - 如何重置图像源中的变量?

javascript - 在学习如何编写 AJAX 客户端代码时是否应该避免使用 JavaScript 库?

javascript - WordPress AJAX 调用未返回结果

javascript - 如何知道类何时更改/添加到 HTML 元素?

javascript - 使页眉和页脚文件包含在多个 html 页面中

Android 2.3.3 忽略媒体查询和 jquery

javascript - Cordova Telerik Native 转换插件

javascript - 如何为 "nested" Accordion 添加事件状态