从顺序 jQuery ajax 调用返回承诺



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

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.") });

最好的方法是什么?

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

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

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

最新更新