2013-10-01 48 views
2

此函數執行兩個連續的AJAX調用,其中頁面2的請求中使用page1返回的數據。從順序jQuery ajax調用返回承諾?

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

這樣做的最好方法是什麼?

+0

方法鏈接是最好的。 –

+0

你檢查過jQuery的推遲:http://api.jquery.com/deferred.promise/ – diEcho

回答

3

call()只需要很輕的修改。

更改donethen並返回內部$.ajax()

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