在angalrjs中使用两个异步调用
Work with two asynchronous calls in angualrjs?
我目前对angularjs的承诺概念不熟悉,发现自己陷入了异步金字塔。
这个情况是一个异步函数,它在成功时调用另一个异步函数2。期望的输出是在两个函数完全执行后执行一些操作。
// 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");
}
},
}
});
现在,我希望在两个顺序异步调用完成时调用alert("Complete")。但目前我有alert("Complete")之前的alert("AsyncFunc2 Complete");
如果你想在两个函数都返回承诺时发出警告消息,那么你可以使用$q.all
$q.all
需要一个promise数组
$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);
}
})();
相关文章:
- 异步函数调用是否可以在两个同步语句之间完成
- 根据两个异步函数调用的结果执行
- 检查qunit中是否有两个异步调用
- 两个异步函数调用填充同一个数组
- 一个回调两个异步函数,一个是谷歌 api getDistanceMatrix
- 两个异步函数之后的回调
- 两个异步模块函数异步工作
- 如何在两个异步函数完成后运行一个函数
- 如何使两个异步API调用一个接一个地执行
- 如何从两个异步函数中获取变量的值
- 两个异步AJAX调用返回相同的结果
- 如何在node.js中的一个步骤中运行两个异步操作作为一个原子操作
- 控制流程:运行两个异步数组映射
- 等待两个异步请求
- 在angalrjs中使用两个异步调用
- ExtJS如何在两个异步事件之后设置一个动作
- 如何在链接两个异步jQuery函数时完全避开jQuery承诺
- 连接两个异步调用
- 如何按顺序执行两个异步函数
- Javascript:在进入第三个函数之前测试两个异步调用