从顺序jQuery ajax调用返回承诺?

时间:2013-10-01 04:56:58

标签: javascript jquery promise

此函数进行两次连续的AJAX调用,page1返回的数据在page2的请求中使用。

function call() {
    return $.ajax("http://example.com/page1").done(function(d) { 
        $.ajax("http://example.com/page2", { data: d.foo });
    });
}

我希望call()返回一个仅在page2完成加载后才会解析的承诺,而不是像page1完成时那样结束,所以有可能这样做:

call().done(function() { console.log("page2 has loaded.") });

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

call()只需要进行非常轻微的修改。

done更改为then并返回内部$.ajax()

function call() {
    return $.ajax("http://example.com/page1").then(function(d) {
        return $.ajax("http://example.com/page2", { data: d.foo });
    });
}