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

最近我在做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这种方法了

原文地址:https://www.cnblogs.com/zhanyuefeixian/p/11956839.html

时间: 2024-11-15 15:46:11

关于angularjs异步操作后台请求时,用$q.all排列先后顺序的问题的相关文章

angularjs中ajax请求时传递参数的方法

method1方法使用的是params参数,该用法会把参数直接附加到url中 method2方法使用的是data参数,该参数会把页面参数类型从默认的multipart/form-data改为application/x-www-form-urlencoded类型,并且将传递的data解析为字符串,该方法会以post参数的方式传递 下面是代码部分: <html ng-app="myApp"> <head> <title>angularjs-ajax<

如何解决每次向后台发起请求时判断用户是否处于登录状态?

事件起因: 小x向我反应用户在我开发的系统中,在其中一个功能上待了很长时间,当用户跳转到其他界面上时,突然就掉线了. 他告诉我应当在用户每次向后台索取数据的时候进行用户登录状态的检验. 用户的登录状态其实是个比较繁琐的过程.按照业务的要求,当用户点击登录界面的保存密码按钮时,在本地的cookie进行长达七天的保存.当用户没有点击保存密码的时候,主要依靠session来进行保存. session与cookie: 这两者之间的关系,网上有太多内容介绍了.简单来说:session放在服务器端.当浏览器

ElementUI项目请求SpringBoot后台项目时提示:Access to XMLHttpRequest at **from origin ** has been blocked by CORS policy

场景 搭建ElementUI前端项目后提示: Access to XMLHttpRequest at **from origin ** has been blocked by CORS policy 这是因为在请求后台SpringBoot接口时出现了跨域请求问题. 本来打算是搭建好前端项目后再js中进行ajaxq请求数据,但是会因为跨域被拒绝. 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与

好友列表右键菜单进行Ajax请求时直接跳转至登陆页面

今天在做右键菜单,当点击重命名进行Ajax请求时,并没有向后台发送数据而是直接跳转到了首页.朕百思不得其解,后来在前台页面发现一个问题: <li><a href='#' onclick="renameContactsFunction()">重命名</a></li> 原来就是这个herf='#'惹的祸.当我点击时候,页面会跳转到'#'这个路径而不是进行Ajax请求.将上面那段代码变成 <li><a onclick=&quo

ajax同步请求时,google浏览器崩溃。改用Deferred

jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本. 每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象. 这个功能很重要,未来将成为jQuery的核心方法,它彻底改变了如何在jQuery中使用ajax.为了实现它,jQuery的全部ajax代码都被改写了.但是,它比较抽象,初学者很难掌握,网上的教程也不多.所以,我把自己的学习笔记整理出来了,希望对大家有用. 本文不是初级教程,针对的读者是那些已经具备

java接受从安卓客户端发送过来的get请求时,出现乱码的解决思路及方法

今天下午遇到了这样一个感觉很常见的问题,但是度娘了N遍,却始终找不到有效的解决方法,于是乎,在苦求他人无果的情况下,研究出了一种简单有效的方法,具体实现思路如下: (1).让安卓客户端在发送get请求之前,先通过String str = URLEncode.encode(str, "utf-8");指定编码格式为UTF-8:这样安卓客户端在给服务器端发送请求时就会以UTF-8的格式发送. (2).服务器端通过request.getParameter("str");方

关于异步请求时出现的问题

第一个问题: 在struts2的配置文件中  如果不指定type的类型 那么在action中任何跳转都是默认forword类型的  称为内部跳转  比如下面的例子 第一个例子: 管理员登录成功之后  跳转到list.jsp页面 但是网页上的url却是下面的 第二个例子: 用户登录成功之后  跳转到detail.jsp页面 但是url 说了这么多   就是为了解决上面的操作和异步请求时   容易出现的问题 继续拿第二个例子来说明  如果在该详情页面中  我使用异步操作(比如做更新) 只要我们使用了

Web传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时

eb传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时,无法传递问题分析:tomcat上默认post提交大小为2M,左右,超过这个大小了,就会传值不成功解决方法:修改post提交大小的限制大小,在server.xml上修改,如下:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8

Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法

Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误 解决方法1: 注释掉此段代码,即可. 缺点:导致Django项目完全无法防止csrf攻击 解决方法2: 在 views.py文件中 #导入,可以使此次请求忽略csrf校验 from django.views.decorators.csrf import csrf_exempt #在处理函数加此装饰器即可 @csrf_exempt def post(request): na