angular中处理多个异步请求的方法汇总
2024-08-30 20:27:37
在实际业务中经常需要等待几个请求完成后再进行下一步操作。但angularjs中$http不支持同步的请求。
解决方法一:
$http多层嵌套
$http.get('url1').success(function (d1) { $http.get('url2').success(function (d2) { //处理逻辑 }); });
解决方法二:
then中的方法会按顺序执行。
var app = angular.module('app',[]); app.controller('promiseControl',function($scope,$q,$http) { function getJson(url){ var deferred = $q.defer(); $http.get(url) .success(function(d){ d = parseInt(d); console.log(d); deferred.resolve(d); }); return deferred.promise; }
getJson('json1.txt').then(function(){ return getJson('json2.txt'); }).then(function(){ return getJson('json1.txt'); }).then(function(){ return getJson('json2.txt'); }).then(function(d){ console.log('end'); }); });
解决方法三:
$q.all方法第一个参数可以是数组(对象)。在第一参数中内容都执行完后就会执行then中方法。第一个参数的方法的所有返回值会以数组(对象)的形式传入。
var app = angular.module('app',[]); app.controller('promiseControl',function($scope,$q,$http) { $q.all({first: $http.get('json1.txt'),second: $http.get('json2.txt')}).then(function(arr){ console.log(arr); angular.forEach(arr,function(d){ console.log(d); console.log(d.data); }) }); });
最新文章
- XML中&; <;>; 单引号&#39; 双引号 "; 报错
- opencv3.0+VS2015+64位win7配置
- Xamarin自学教程(Android)之一
- css 面试学习
- Python 基础【第九篇】运算
- SGU 103.Traffic Lights(最短路)
- Entity Framework With Mysql 之Code First
- SharePoint 无法删除搜索服务应用程序
- 微信小程序之给项目设置id后提示不在合法域名列别中
- LNMP环境下搭建wordpress
- firemonkey EDit 改变颜色
- 类的父类object的一些属性、方法
- PHP实用代码片段(一)
- Fourier Transform Complex Conjugate Discussion
- pip 安装第三方包提示Unknown or unsupported command &#39;install&#39;
- [No0000F3]C# 结构(Struct)
- cent 7 安装VNC
- 服务器端数据合法性验证:签名sign和口令token原理
- pixi.js + three.js
- Machine Learning、Date Mining、IR&;NLP 会议期刊论文推荐