2

我试图在第一个函数通过 ajax 调用完成后调用第二个函数。我以前是通过在第一个函数的成功部分调用第二个函数来做到这一点的

function1(){
    $.ajax({
       success: function(results)
            function2(results);
    })
}

我试图使它更优雅,而不是将这些功能捆绑在一起。我刚开始尝试$.promise()

我正在尝试编写看起来像这样的代码

function1().promise().done(function(results){
    function2(results);
});

function1({
   $.ajax({
       success: function(results){
            return results;
       }
   })
})

我可能会以完全错误的方式解决这个问题。任何意见将是有益的

4

1 回答 1

2

您必须返回由返回的承诺$.ajax

function1() {
   return $.ajax({...});
}

function1().done(function2);

.promise,您所指的函数是jQuery 对象的方法。但是$.ajax不返回 jQuery 对象,它返回一个jqXHR 对象,它直接实现了 Promise 接口。

另请参阅:如何从异步调用返回响应?和 jQuery 文档:http ://learn.jquery.com/code-organization/deferreds/ 。

于 2013-08-26T18:36:46.443 回答