Javascript 在angualrjs中处理两个异步调用?
我目前还不熟悉angularjs的promise概念,发现自己被困在异步金字塔中 这种情况是一个异步函数,它成功调用另一个异步函数2。所需的输出是在两个函数完全执行后执行一些操作Javascript 在angualrjs中处理两个异步调用?,javascript,angularjs,asynchronous,angular-promise,Javascript,Angularjs,Asynchronous,Angular Promise,我目前还不熟悉angularjs的promise概念,发现自己被困在异步金字塔中 这种情况是一个异步函数,它成功调用另一个异步函数2。所需的输出是在两个函数完全执行后执行一些操作 // Inside Controller ServiceName.AsyncFunc1().then(function(){ alert("Complete"); }) // Inside Service
// Inside Controller
ServiceName.AsyncFunc1().then(function(){
alert("Complete");
})
// Inside Service
app.service('ServiceName', function ($http) {
return {
AsyncFunc1 : function()
{
var self = this;
return $http.post(url).
success(data)
{
self.AsyncFunc2();
}
},
AsyncFunc2 : function()
{
return $http.post(url2).
success(data)
{
alert("AsyncFunc2 Complete");
}
},
}
});
现在,我想在两个顺序异步调用都完成时调用alertComplete。
但目前我在alertAsyncFunc2完成之前已经完成了alertComplete 如果您希望在两个函数都返回承诺时收到警报消息,则可以使用$q.all $q.all需要一系列承诺 范例
$q.all([function1(), function2()])
编辑
好啊如果是这样的话,那么在第二个顺序函数被解析后,您就可以使用它了。根据你的解释,这就是我的理解
(function(){
angular
.module('myApp')
.controller('MyController', MyController);
function MyController(myService) {
function secondASyncSuccess() {
alert("second function is done");
}
function firstFuncSuccess() {
alert("First func is done");
myService.secondASyncFunction()
.then(secondASyncSuccess, secondASyncFailure);
}
myService.firstASyncFunction()
.then(firstFuncSuccess, firstFuncFailure);
}
})();
返回self.AsyncFunc2;,也可以将success改为then.$q.all并行工作,但我希望它是连续的。试试这个。我希望这就是您所说的通过承诺执行顺序$http调用的意思。