[英]How to wait for multiple request to complete in angularjs
在继续执行Web应用程序之前,我希望多种方法完全加载。 为此,我做了以下工作-
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方法的promise。
这工作正常,但给我性能问题。 还有其他方法可以做到吗?
如果顺序不重要,请使用$ 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
});
假设所有getDataX
函数都返回promise,则应像这样链接它们:
getData()
.then(function(result){
return getData1();
})
.then(function(result1){
return getData2();
})...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.