2013-08-07 152 views
1

我有一個從多個jsonp請求獲取數據的JavaScript應用程序。一旦所有數據被返回,頁面將被更新爲新數據。下面是僞代碼,但它是爲同步環境構建的。收集多個JSONP結果

function GetAllData() { 

    var data1= GetData1(); 
    var data2= GetData2(); 
    var data3= GetData3(); 

    UpdatePage(data1,data2,data3); 
} 

我的問題是,我需要收集,並且知道,當所有的數據已經從JSONP請求我更新頁面之前被退回。我在看jQuery推遲,但我不知道這是否是正確的解決方案。

任何建議,將不勝感激。

回答

1

Deferred是您正確的解決方案,當您使用JQuery時。

function GetData1() { 
    return $.ajax("/foo", ...); 
} 

function GetData2() { 
    return $.ajax("/bar", ...); 
} 

function GetData3() { 
    return $.ajax("/baz", ...); 
} 

function UpdatePage(data1, data2, data3) { 
    ... 
} 

function Error() { 
    alert("An error occurred while fetching data"); 
} 

function GetAllData() { 
    $.when(GetData1(), GetData2(), GetData3()).then(UpdatePage, Error); 
} 
+0

太棒了,這個工程太棒了!感謝這個例子,它非常有幫助。 – Will