提问人:Student 提问时间:4/22/2020 更新时间:4/22/2020 访问量:333
AngularJS:在单个函数中等待多个异步调用
AngularJS: Waiting for Multiple asynchronous calls in a single function
问:
我有一个 AngularJS 函数,我在其中进行了 2 个异步调用。这 2 次调用不是依赖的,但该函数应仅在两次调用完成且结果存储在返回变量中时返回。
我尝试了不同的解决方案,最终使用了如下所示的解决方案。但它非常缓慢,因为它等待第一个完成
function myAngularfunction(a, b) {
var defer = $q.defer();
var test= {
a: "",
b: ""
};
msGraph.getClient()
.then((client) => {
// First Async call
client
.api("https://graph.microsoft.com/v1.0/")
.get()
.then((groupResponse) => {
var result = groupResponse;
test.a= result.displayName;
msGraph.getClient()
.then((client) => {
// Second Async call
client
.api("https://graph.microsoft.com/v1.0/teams/")
.get()
.then((groupResponse) => {
var result = groupResponse;
test.b= result.displayName;
defer.resolve(test);
});
});
});
});
return defer.promise;
}
调用函数
myAngularfunction(a, b).then(function(obj)
我怎样才能在同一个函数中等待两个调用而不嵌套它们?或者调用下一个而不等待第一个完成。
答:
0赞
Jack Chen
4/22/2020
#1
也许你可以试试这样的$when:$.when(functiton1,function2).done(()=>{})。但是您需要在函数 1 和函数 2 中添加 deffered。
0赞
Praveen.R
4/22/2020
#2
- 我认为你的情况最适合使用语法。
$q.all([promise1, promise2, promise3]).then()
- 你多次打电话,我认为这是可以避免的。
msGraph.getClient()
评论