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) ...
随机推荐
- js闭包绑定元素
闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状 ...
- Spring装配bean--01组件扫描和自动装配
Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装 ...
- PAT1030 Travel Plan (30)---DFS
(一)题意 题目链接:https://www.patest.cn/contests/pat-a-practise/1030 1030. Travel Plan (30) A traveler's ma ...
- [笔记]我的Linux入门之路 - 03.Java环境搭建
其实ubuntu是自带一个叫openJDK的东西的,是谷歌看Oracle不爽而搞的.不过呢...总感觉不太习惯,况且我既然都来Linux了,总是想折腾一把的. 首先先检查下有没有安装java.终端输入 ...
- RabbitMQ4--发后即忘和RPC
在项目中引入RabbitMQ通常会考虑它会带来的好处:解耦应用程序,实现不同编程语言之间的互通,解除对特定通信协议的依赖,解除应用程序在时序上执行的依赖(异步).落实到代码层面就是两种常用应用模式:& ...
- 瀑布流原生ajax,demo
最近听朋友们说起瀑布流挺多的,自己就去研究下了,一个简单的原生demo,分享给大家... 简单分为三个文档,有详细的注释 img:ajax.php:demo.php 其中img中放入图片 1.jpg: ...
- 白话讲session
什么是session Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待session,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器 ...
- 根据wsdl文件用soapUi快速创建webService服务(有图有真相)
最近公司业务上使用webservice 频繁.由于之前都是自己搭建webservice 自己定义提供给别人服务,现在则相反需求都是根据人家提供的wsdl 文件来生成 我们平台需要提供的接口.刚开始不知 ...
- RFM模型——构建数据库营销的商业战役!(转)
RFM模型:R(Recency)表示客户最近一次购买的时间有多远,F(Frequency)表示客户在最近一段时间内购买的次数,M (Monetary)表示客户在最近一段时间内购买的金额.一般原始数据为 ...
- NopCommerce(3.9)作业调度插件
NopCommerce(3.9)作业调度插件视频教程录制完成,下面是插件源码下载地址和插件视频教程下载地址:插件下载地址: http://www.nopcommerce.com/p/2752/jobs ...