下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:斩月飞仙     来源: https://www.cnblogs.com/zhanyuefeixian/p/11956839.html点击数:867发布时间: 2020-03-15 15:16:19

标签: angularjs自动化异步

Web开发

  AngularJS诞生于2009年,由MiskoHevery等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC(Model–view–controller)、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。

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

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

web前端:关于angularjs异步操作后台请求时,用$q.all排列先后顺序的问题_angularjs_自动化_异步_课课家

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

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

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

  就用$q.all方法

  letlist=$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是为了克服html在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建web应用的话它就显得乏力了。所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事。

赞(12)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程