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 相关文章推荐
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
js加强的经典分页实例
Mar 15 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
JavaScript学习笔记之取数组中最大值和最小值
Mar 23 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 Javascript
vue.js学习笔记之绑定style样式和class列表
Oct 31 Javascript
微信小程序点击控件修改样式实例详解
Jul 07 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
Nov 02 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
小程序实现侧滑删除功能
Jun 25 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 htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
htm调用JS代码
2007/03/15 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
微信小程序左右滑动的实现代码
2017/12/15 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
js实现弹窗猜数字游戏
2020/11/26 Javascript
Python中的super用法详解
2015/05/28 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
工作个人的自我评价
2014/01/14 职场文书
明信片寄语大全
2014/04/08 职场文书
英语教学课后反思
2016/02/15 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
php双向队列实例讲解
2021/11/17 PHP
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers