angular中的$q服务
$q的一共有四个api:
1.$q.when(value, successFn, errorFn, progressFn),返回值为一个promise对象
--value可以是一个任意数据,也可以是一个promise对象:
如果是任意数据的情况,则直接调用successFn的函数,所以后两个参数没有写的意义。
var a=$q.when(“something”,function(data){ console.log(data) //something
return data;
})
a.then(function(data){
console.log(data) //something这里的值取决于successFn的返回值,如果没有返回值,则这个值为undefined
})
如果是promise的情况
var a=$q.when("apple"); //a是一个promise对象
$q.when(a,function(data){
console.log(data) //apple 这个值跟a这个promise对象的then方法中successFn,errorFn,processFn的入参一一对应
})
2,$q.reject(reason),返回值为一个promise对象
var a=$q.reject("no happy") //a为一个promise 对象
a.then(function(data){
console.log(data) //根本无任何意义
},function(data){
console.log(data) // no happy
})
因为reject 只会触发errorFn这个函数,所以以上方法也可以这么写:
var a=$q.reject("no happy") //a为一个promise 对象
a.catch(function(data){
console.log(data) //no happy
})
备注:如果传入的不是"no happy",而是一个promise对象,那么
a.catch(function(data){
console.log(data) //data为a
a.catch(function(data){
console.log(data) // no happy
})
})
备注:$q.reject跟$q.when对比,返回的promise对象的then方法中被触发函数的入参,前者取决于$q.reject(value)的value,后者取决于$q.when()的第二三四个参数(函数)的返回值。
3.$q.all([promise1, promise1])
接受一个包含若干个 promise 的数组,返回一个promise对象,返回的promise的progressFn并没有用;
等所有的promise resolve后,其本身resolve包含上述结果的数组[data1,data2]
var a=$q.when("hello");
var b=$q.when("world");
$q.all([a,b]).then(function(data){
console.log(data) //["hello","world"]
})
如果上述 promise 有一个 reject, 那么$q.all() 会把这个 rejected promise 作为其 rejected promise (只有一个哦)
var a=$q.when(“hello”);
var b=$q.reject("world");
$q.all([a,b]).then(function(data){
console.log(data) //没有任何意义
},function(data){
console.log(data) //world
})
4.$q.deffer() 返回一个deferred对象。
这个用的比较普遍,不多说了
angular中的$q服务的更多相关文章
- angular中的$q服务实例
用于理解$q服务 参考:http://www.zouyesheng.com/angular.html#toc39 广义回调管理 和其它框架一样, ng 提供了广义的异步回调管理的机制. $http 服 ...
- 形象的讲解angular中的$q与promise(转)
以下内容摘自http://www.ngnice.com/posts/126ee9cf6ddb68 promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多. ...
- 原创:形象的讲解angular中的$q与promise
promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多.promise全称是 Futures and promises.具体的可以参见 http://en ...
- angular中的$q.defer()服务异步处理
jquery和angular都有defer服务,我暂以angular为例谈谈我的理解,最后并附上jquery的阮一峰总结的defer. 以我目前项目的部分代码为例说明为什么要用deferred. fu ...
- promise和Angular中的 $q, defer
在ES6语法中,新出了promise构造函数, 可用来生成promise实例. Promise对象: 代表了未来某个将要发生的事件(通常是一个异步操作).有了promise对象, 可以将异步操作以同步 ...
- Angular中的$q的形象解释及深入用法
作者:寸志链接:https://zhuanlan.zhihu.com/p/19622332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 早上,老爸说:“儿子,天气如何 ...
- angular中的$http服务
$http是ng内置的一个服务.是简单的封装了浏览器原生的XMLHttpRequest对象. 写法1 $http({ method: "GET", url: 'data.json' ...
- angular学习笔记(二十九)-$q服务
angular中的$q是用来处理异步的(主要当然是http交互啦~). $q采用的是promise式的异步编程.什么是promise异步编程呢? 异步编程最重要的核心就是回调,因为有回调函数,所以才构 ...
- angular的$q服务和promise模式
此承诺/延迟(promise/deferred)实现的灵感来自于 Kris Kowal's Q CommonJS Promise建议文档 将承诺(promise) 作为和 异步执行操作(action) ...
随机推荐
- 创建并发布npm包
1.npm官网创建npm账户 npm网站地址:https://www.npmjs.com/ npm网站注册地址:https://www.npmjs.com/signup 2.命令行工具登录npm np ...
- es6英文文档翻译
ECMA-262英文文档翻译,github地址: https://github.com/zhoushengmufc/es6 ECMA-262英文文档翻译,在线地址: http://zhoushengf ...
- 四、I/O
九.什么是I/O: 9.1.在Windows程序中,基础的运行单位为线程,为每一个线程分配一个处理器,可以让系统执行多个操作, 9.2.当线程进行一个I/O操作时,会被挂起,从而影响性能,为了解决这类 ...
- [js笔记整理]面向对象篇
一.js面向对象基本概念 对象:内部封装.对外预留接口,一种通用的思想,面向对象分析: 1.特点 (1)抽象 (2)封装 (3)继承:多态继承.多重继承 2.对象组成 (1)属性: 任何对象都可以添加 ...
- IDEA下使用maven构建web项目(SpringMVC+Mybatis整合)
需求背景:由于最近总是接到一些需求,需要配合前端团队快速建设移动端UI应用或web应用及后台业务逻辑支撑的需求,若每次都复用之前复杂业务应用的项目代码,总会携带很多暂时不会用到的功能或组件,这样的初始 ...
- Saltstack自动化运维
Saltstack三大功能 1,远程执行 2,配置管理(状态) 3,云管理 四种运行方式: Local 本地 Minion/Master C/S Syndic 代理模式 Salt S ...
- 1.centOS安装Mysql
上个星期研究了一个星期的Mysql,从今天起把学到的东西整理一下. ---------------------------------------------- mysql安装本人亲试过两种安装方式, ...
- C/s从文件(TXT)中读取数据插入数据库
流程: 1.当按钮单击时,弹出OpenFileDialog 2.判断后缀名是否合法 3.导入数据库 按钮事件中的代码: 1.判断用户是否选中文件. 2.判断用户选择的文件是否为txt //第一步,当按 ...
- 如何选择版本控制系统 ---为什么选择Git版本控制系统
版本控制系统 "代码"作为软件研发的核心产物,在整个开发周期都在递增,不断合入新需求以及解决bug的新patch,这就需要有一款系统,能够存储.追踪文件的修改历史,记录多个版本的开 ...
- Longest Substring Without Repeating Characters2015年6月9日
Given a string, find the length of the longest substring without repeating characters. For example, ...