angularjs学习之$q()

本文深入解析Angular中$q服务的Promise机制,包括defer对象的使用,resolve、reject及notify方法的功能,以及如何通过.then方法处理成功、失败和进度回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

angular中的$q()是用来处理异步的(主要是$http交互)

$q采用的是promise式的异步编程,异步编程最重要的核心就是回调,回调有三个关键部分:1:什么时候执行回调 2:执行什么回调  3:执行回调是传入什么参数

 首先看$q()完整的api

$q的方法 :

一。$q,defer()返回一个对象,一般把它复制给defer变量

var defer=$q.defer()

*defer的 方法:

(一)defer.resolve(data)

对promise发起通知,通知执行成功的回调,回调执行的参数为data

(二)defer.reject(data)

对promise发起通知,通知执行失败的回调,回调执行的参数为data

(三)defer.notify(data)

对promise发起通知,通知执行进度的回调,回到执行的参数为data

*defer的属性

(一)defer.promise的属性

1.defer.promise.$$v

defer.promise.$$v对象就是对应的defer发送的data,当defer还没有发送通知时,$$v为空

*defer.promise的方法:

1.defer.promise.then([success],[error],[notify]);

.then方法接受三个参数,均为函数,函数在接受到defer发送通知时被执行,函数中的参数为defer发送通知时传入的data

[success]:成功回调。defer.resolve()时调用

[error]:失败回调,defer.reject()时调用

[notify]:进度回调,defer.notify()时调用

.then()方法返回一个promise对象,可以接续调用.then(),注意,无论.then()是调用的success函数,还是error函数,还是notify函数,发送给下一个promise对象的通知一定是成功通知,而参数则是函数的返回值.也就是说,then()方法里的函数被执行结束后,即为下一个promise发送了成功通知,并且把返回值作为参数传递给回调.

html:

152117_hnup_3653125.png

js:

如果正确创建后台对于“/name”的请求处理,在一秒后返回“code_bunny”,则一秒后页面显示"成功code_bunny

 成功code_bunny2"可以看到,第一个then()的成功的回调返回的data+2这个值被传到了下一个.then()的 成功回调的data参数中

如果后台没有创建对于"/name"的请求处理,则页面直接显示152750_R7eN_3653125.png可以看到,就算第一个.then()调用的是失败回调,但是它发给下一个promise的通知依然是成功通知

转载于:https://my.oschina.net/u/3653125/blog/1514121

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值