Angular通信$q服务和promise对象】的更多相关文章

promise 约定(promise)是一个对象,表示在未来时间点会发生的某件事情,约定可以是三种状态之一:等待.完成或拒绝.约定将从等待状态开始,然后可以转换为完成或者拒绝状态,一旦约定完成或者被拒绝,它就无法再改变状态.例如我们的$http服务返回的就是一个经过包装的promise对象. 可以看到,黑色部分圈起来的是基本的promise部分,此外$http还提供了success和error的语法糖,我们完全也可以直接使用then方法. var promise = ...; // 省略$htt…
此承诺/延迟(promise/deferred)实现的灵感来自于 Kris Kowal's Q CommonJS Promise建议文档 将承诺(promise) 作为和 异步执行操作(action)结果对象进行交互的接口,在指定的时间内可能完成也可能不能够完成(如超时,错误,拦截等等). 从错误处理的角度看,延迟(deferred )和承诺(promise ) API 对于异步编程来说, 和同步编程的 try,catch, 以及throw 作用差不多. // 为了演示的目的,此处我们假设 `$…
原文链接:a better way to learn AngularJS - promises AngularJS通过内置的$q服务提供Promise编程模式.通过将异步函数注册到promise对象,Promise编程模式提供一种链式调用异步函数的方式. Promise模式作为ES6规范之一,取得JavaScript原生支持.AngularJS中$q服务提供的接口,非常近似这一新的规范,所以代码移植到ES6版本将会非常容易. 初始化: <html> <head> <title…
浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00  博客园-原创精华区 原文  http://www.cnblogs.com/big-snow/p/5126059.html 主题 PromiseAngularJS 1. $q $q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(或异常). 2. defer defer的字面意思是延迟, $q.defer()  可以创建一个deferre…
先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg1,arg2,function(){ xxxx.... })…
Promise是一种和callback有类似功能却更强大的异步处理模式,有多种实现模式方式,比如著名的Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg1,arg2,function(){ xxxx.... }) }) }) 本身嵌套就已…
Angular中的promise: Promise是一种异步方式处理值的方法.代表了一个函数最 终可能的返回值或者抛出的异常 在之前,通常都是使用闭包或者回调来响应非同步的有意义数据 使用promise的目的是:获得功能组合和错误冒泡(error bubbling)能力的同时,保持 代码异步运行的能力. $q的api: defer():用来生成一个延迟对象 var defer =$q.defer(); reject():参数接收错误消息,相当于在回调函数中抛出一个异常,然后在下一个then中调用…
用于理解$q服务 参考:http://www.zouyesheng.com/angular.html#toc39 广义回调管理 和其它框架一样, ng 提供了广义的异步回调管理的机制. $http 服务是在其之上封装出来的.这个机制就是 ng 的 $q 服务. 不过 ng 的这套机制总的来说实现得比较简单,按官方的说法,够用了. 使用的方法,基本上是: 通过 $q 服务得到一个 deferred 实例 通过 deferred 实例的 promise 属性得到一个 promise 对象 promi…
$q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(或异常). 官网:http://docs.angularjs.cn/api/ng/service/$q defer是延迟的意思, $q.defer()可以创建一个deferred实例(延迟对象实例). var defer=$q.defer(); defer有三个方法:resolve,reject,notify,一个属性:promise function asyncGreet(name) {…
$q是做为angular的一个服务而存在的,只是对promise异步编程模式的一个简化实现版,源码中剔除注释实现代码也就二百多行,下面开始介绍$q的API. 一.defer对象(延迟对象)可以通$q.defer()获取,下面是defer对象的api: 1.方法 ——resolve(value):向promise对象异步执行体发送消息告诉他我已经成功完成任务,value即为发送的消息. ——reject(value):向promise对象异步执行体发送消息告诉他我已经不可能完成这个任务了,valu…