1. $q

$q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(或异常)。
2. defer
defer的字面意思是延迟,$q.defer() 可以创建一个deferred实例(延迟对象实例)。
deferred 实例旨在暴露派生的Promise 实例,以及被用来作为成功完成或未成功完成的信号API,以及当前任务的状态。这听起来好复杂的样子,总结$q, defer, promise三者之间的关系如下所示。
var deferred = $q.defer(); //通过$q服务注册一个延迟对象 deferred var promise = deferred.promise; //通过deferred延迟对象,可以得到一个承诺promise,而promise会返回当前任务的完成结果
defer的方法:
defer的小例子:
function asyncGreet(name) {
var deferred = $q.defer(); //通过$q.defer()创建一个deferred延迟对象,在创建一个deferred实例时,也会创建出来一个派生的promise对象,使用deferred.promise就可以检索到派生的promise。
deferred.notify('About to greet ' + name + '.'); //延迟对象的notify方法。
if (okToGreet(name)) {
deferred.resolve('Hello, ' + name + '!'); //任务被成功执行
} else {
deferred.reject('Greeting ' + name + ' is not allowed.'); //任务未被成功执行
}
return deferred.promise; //返回deferred实例的promise对象
}
function okToGreet(name) {
//只是mock数据,实际情况将根据相关业务实现代码
if(name == 'Superman') return true;
else return false;
}
var promise = asyncGreet('Superman'); //获得promise对象
//promise对象的then函数会获得当前任务也就是当前deferred延迟实例的执行状态。它的三个回调函数分别会在resolve(), reject() 和notify()时被执行
promise.then(function(greeting) {
alert('Success: ' + greeting);
}, function(reason) {
alert('Failed: ' + reason);
}, function(update) {
alert('Got notification: ' + update);
});
3. promise
当创建一个deferred实例时,promise实例也会被创建。通过deferred.promise就可以检索到deferred派生的promise。
promise的目的是允许interested parties 访问deferred任务完成的结果。
按照CommonJS的约定,promise是一个与对象交互的接口,表示一个动作(action)的结果是异步的,而且在任何给定的时间点上可能或不可能完成。(这句话好绕口,我的理解是promise相当于一个承诺,承诺你这个任务在给定的时间点上可能会完成,也可能完成不了。如果完成了那就相当于resolve, 如果未完成就相当于reject。不知道这样理解对不对?)
promise 的方法:
补充说明:
promise.then()会返回一个新的衍生promise,形成promise链。例如:
promiseB = promiseA.then(function(result) {
return result + 1;
});
// promiseB will be resolved immediately after promiseA is resolved and its value
// will be the result of promiseA incremented by 1
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# Angular
# $q
# defer
# promise
# AngularJS中update两次出现$promise属性无法识别的解决方法
# AngularJS中的Promise详细介绍及实例代码
# AngularJS 中的Promise --- $q服务详解
# 详解Javacript和AngularJS中的Promises
# AngularJS中处理多个promise的方式
# Angular中的Promise对象($q介绍)
# 浅析Angular2子模块以及异步加载
# 详解Angular.js的$q.defer()服务异步处理
# AngularJS出现$http异步后台无法获取请求参数问题的解决方法
# AngularJS 实现按需异步加载实例代码
# angularjs 处理多个异步请求方法汇总
# AngularJS中的promise用法分析
# 创建一个
# 也会
# 点上
# 就可以
# 是一个
# 那就
# 将会
# 会在
# 这句话
# 你这个
# 它可以
# 实际情况
# 所示
# 使你
# 可以得到
# 回调
# 未被
# 或不
# 或未
# 返回值
相关文章:
如何快速使用云服务器搭建个人网站?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何通过VPS建站实现广告与增值服务盈利?
如何在阿里云部署织梦网站?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
建站之星代理平台如何选择最佳方案?
黑客入侵网站服务器的常见手法有哪些?
如何获取上海专业网站定制建站电话?
设计网站制作公司有哪些,制作网页教程?
如何在香港免费服务器上快速搭建网站?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何快速启动建站代理加盟业务?
Thinkphp 中 distinct 的用法解析
贸易公司网站制作流程,出口贸易网站设计怎么做?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Python路径拼接规范_跨平台处理说明【指导】
创业网站制作流程,创业网站可靠吗?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
建站之星备案流程有哪些注意事项?
建站之星官网登录失败?如何快速解决?
建站主机如何安装配置?新手必看操作指南
太原网站制作公司有哪些,网约车营运证查询官网?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何在景安云服务器上绑定域名并配置虚拟主机?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
C++时间戳转换成日期时间的步骤和示例代码
独立制作一个网站多少钱,建立网站需要花多少钱?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何快速查询网址的建站时间与历史轨迹?
建站VPS选购需注意哪些关键参数?
如何制作算命网站,怎么注册算命网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
内网网站制作软件,内网的网站如何发布到外网?
建站主机与虚拟主机有何区别?如何选择最优方案?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何登录建站主机?访问步骤全解析
建站之星导航菜单设置与功能模块配置全攻略
如何快速打造个性化非模板自助建站?
5种Android数据存储方式汇总
名字制作网站免费,所有小说网站的名字?
如何快速搭建自助建站会员专属系统?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
大型企业网站制作流程,做网站需要注册公司吗?
如何访问已购建站主机并解决登录问题?
建站主机服务器选购指南:轻量应用与VPS配置解析
*请认真填写需求信息,我们会在24小时内与您取得联系。