2013-08-07 138 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