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 相关文章推荐
070823更新的一个[消息提示框]组件 兼容ie7
Aug 29 Javascript
表单项的name命名为submit、reset引起的问题
Dec 22 Javascript
window.addeventjs事件驱动函数集合addEvent等
Feb 19 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
Oct 29 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
angularjs实现文字上下无缝滚动特效代码
Sep 04 Javascript
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
Express结合Webpack的全栈自动刷新
May 23 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 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错误级别的设置方法
2013/06/17 PHP
php实现简单洗牌算法
2013/06/18 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
javascript中的if语句使用介绍
2013/11/20 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
python django 实现验证码的功能实例代码
2017/05/18 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python标准库shutil用法实例详解
2018/08/13 Python
用Python逐行分析文件方法
2019/01/28 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Python安装selenium包详细过程
2019/07/23 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
给女儿的表扬信
2014/01/18 职场文书
教学实习自我评价
2014/01/28 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
大学校务公开实施方案
2014/03/31 职场文书
2014年党支部承诺书
2014/05/30 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
Python中的 No Module named ***问题及解决
2022/07/23 Python