Javascript 如何在angularjs中等待多个请求完成
我希望在继续我的web应用程序之前完全加载多个方法。为此,我做了如下工作:Javascript 如何在angularjs中等待多个请求完成,javascript,angularjs,performance,angular-promise,Javascript,Angularjs,Performance,Angular Promise,我希望在继续我的web应用程序之前完全加载多个方法。为此,我做了如下工作: function getData(){ var defer = $q.defer(); $http.get("/echo/json/").success(function(data, status) { getData2(); getData3(); $timeout(function(){
function getData(){
var defer = $q.defer();
$http.get("/echo/json/").success(function(data, status) {
getData2();
getData3();
$timeout(function(){
defer.resolve(data);
}, 1000);
});
return defer.promise;
}
在这里,getData2()和getData3()也将执行ajax调用。所以我必须等待这些方法完成调用,然后我必须返回main方法的承诺
这是工作良好,但给我的性能问题。
还有其他方法吗?如果顺序不重要,请使用$q.all(),如下所示:
$q.all([getData1(), getData2(), getData3()])
.then(function(result){
// result[0] is output of getData1()
// result[1] is output of getData2()
// result[2] is output of getData3()
});
getData1()
.then(function(result1){
return getData2();
})
.then(function(result2){
return getData3();
})
.then(function(result3){
// your other codes
});
但是,如果顺序很重要,请按如下顺序对其进行连续调用:
$q.all([getData1(), getData2(), getData3()])
.then(function(result){
// result[0] is output of getData1()
// result[1] is output of getData2()
// result[2] is output of getData3()
});
getData1()
.then(function(result1){
return getData2();
})
.then(function(result2){
return getData3();
})
.then(function(result3){
// your other codes
});
假设所有
getDataX
函数都返回承诺,您应该像这样链接它们:
getData()
.then(function(result){
return getData1();
})
.then(function(result1){
return getData2();
})...