angularjs怎么发异步请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularjs怎么发异步请求相关的知识,希望对你有一定的参考价值。
使用AngularJS向同一个URL发送POST请求,同时带上一些POST数据,你可以像下面这样做:var postData = text:'long blob of text';
//下面这一行会被当成参数附加到URL后面,所以post请求最终会变成/api/user?id=5
var config = params: id: '5';
$http.post('api/user', postData, config
).success(function(data, status, headers, config)
//成功之后做一些事情
).error(function(data, status, headers, config)
//处理错误
); 参考技术A 使用Promise对象呀
angularjs $q$http 处理多个异步请求
angularjs $q、$http 处理多个异步请求
在实际业务中经常需要等待几个请求完成后再进行下一步操作。但angularjs中$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); }) }); });
解决方法四:
var app = angular.module(\'app\',[]); app.controller(\'directiveControl\',function($scope,$http,$q){ function getTxt(a) { var deferred = $q.defer(); $http.get(\'1.json\') .success(function (d) { console.log(a); deferred.resolve(); }) return deferred.promise; } getTxt(1).then(function(){ return getTxt(2); }).then(function(){ return getTxt(3); }).then(function(){ return getTxt(4); }).then(function(){ return getTxt(5); }).then(function(){ console.log(\'end\'); }); });
$q的详细使用方法网上的有很多教程。我也是刚接触。上面的代码是我按我的理解写的,经过了测试没有问题。
以上是关于angularjs怎么发异步请求的主要内容,如果未能解决你的问题,请参考以下文章