关于angularjs异步操做后台请求时,用$q.all排列前后顺序的问题

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

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

2.众多的选项要从后台接口获得,默认项从另外一个后台接口获得,这就须要$promise.then()操做异步

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

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

就用$q.all方法blog

let list = $q.all({                      // 多个后台请求,部分前后顺序接口

    url1: getUrl1().$promise,get

    url2: getUrl2().$promise,io

    url3: getUrl3().$promise,function

});

$scope.list.then(function (result) {
  // 三个后台请求结果
result.url1
result.url2
result.url3
}).finally(function () { // finally的优势:1.不管成功失败都会执行 2.前面三个请求结束后才会执行
// 最后一个后台请求
   // TODO
});

 

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

相关文章
相关标签/搜索