angularjs 处理多个异步请求方法汇总


Posted in Javascript onJanuary 06, 2015

在实际业务中经常需要等待几个请求完成后再进行下一步操作。但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);

        })

    });

});

$q的详细使用方法网上的有很多教程。我也是刚接触。讲不好,不敢乱讲。上面的代码是我按我的理解写的,经过了测试没有问题。

Javascript 相关文章推荐
JavaScript delete操作符应用实例
Jan 13 Javascript
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
Javascript 键盘事件的组合使用实现代码
May 04 Javascript
jQuery遍历Form示例代码
Sep 03 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 Javascript
JS原型链怎么理解
Jun 27 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
angularJS 指令封装回到顶部示例详解
Jan 22 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
深入解析微信小程序开发中遇到的几个小问题
Jul 11 Javascript
json实现前后台的相互传值详解
Jan 05 #Javascript
jQuery中eq()方法用法实例
Jan 05 #Javascript
一款基于jQuery的图片场景标注提示弹窗特效
Jan 05 #Javascript
jQuery中toggleClass()方法用法实例
Jan 05 #Javascript
jQuery中removeClass()方法用法实例
Jan 05 #Javascript
jQuery中addClass()方法用法实例
Jan 05 #Javascript
js Calender控件使用详解
Jan 05 #Javascript
You might like
PHP中feof()函数实例测试
2014/08/23 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
python生成ppt的方法
2018/06/07 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
迪拜航空官方网站:flydubai
2017/04/20 全球购物
超越自我演讲稿
2014/05/21 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
小学思想品德教学反思
2016/02/24 职场文书
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫