当前位置: 移动技术网 > IT编程>脚本编程>AngularJs > 解决Angularjs异步操作后台请求用$q.all排列先后顺序问题

解决Angularjs异步操作后台请求用$q.all排列先后顺序问题

2020年03月09日  | 移动技术网IT编程  | 我要评论

祁东县邮编,七十年代时尚精英,bqbq

最近我在做angularjs程序时遇到了一个问题

1.页面有很多选择框,一个选择框里面有众多的选择项,和一个默认选定的项,像下面这样(很多选择框,不只一个):

2.众多的选项要从后台接口得到,默认项从另一个后台接口得到,这就需要$promise.then()操作

3.而多个$promise.then()属于异步操作,先后顺序不是一定的,如果先得到众多选项,后得到默认值,显示就没有问题,如果顺序颠倒,默认项就会为空,这不是我想要的

4.这就需要众多选项的后台请求都获得完,才去后台请求默认值,

就用$q.all方法

let list = $q.all({    // 多个后台请求,部分先后顺序
 url1: geturl1().$promise,
 url2: geturl2().$promise,
 url3: geturl3().$promise,
});
$scope.list.then(function (result) {
  // 三个后台请求结果
 result.url1
 result.url2
 result.url3
}).finally(function () {  // finally的优点:1.无论成功失败都会执行 2.前面三个请求结束后才会执行
 // 最后一个后台请求
   // todo
});
 

补充:当然还有then().then().then()......这种方法,就把请求顺序执行了,不过select众多选项的后台请求不需要先后顺序,只是默认项需要最后执行,我就选择$q.all这种方法了。

总结

以上所述是小编给大家介绍的解决angularjs异步操作后台请求用$q.all排列先后顺序问题,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网