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用法分析
# 创建一个
# 也会
# 点上
# 就可以
# 是一个
# 那就
# 将会
# 会在
# 这句话
# 你这个
# 它可以
# 实际情况
# 所示
# 使你
# 可以得到
# 回调
# 未被
# 或不
# 或未
# 返回值
相关文章:
如何快速查询网址的建站时间与历史轨迹?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
个人网站制作流程图片大全,个人网站如何注销?
焦点电影公司作品,电影焦点结局是什么?
广州商城建站系统开发成本与周期如何控制?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
建站168自助建站系统:快速模板定制与SEO优化指南
济南企业网站制作公司,济南社保单位网上缴费步骤?
制作营销网站公司,淘特是干什么用的?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
定制建站哪家更专业可靠?推荐榜单揭晓
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何在搬瓦工VPS快速搭建网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
创业网站制作流程,创业网站可靠吗?
教程网站设计制作软件,怎么创建自己的一个网站?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
海南网站制作公司有哪些,海口网是哪家的?
公司门户网站制作流程,华为官网怎么做?
西安专业网站制作公司有哪些,陕西省建行官方网站?
建站之星如何快速生成多端适配网站?
如何在IIS管理器中快速创建并配置网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
油猴 教程,油猴搜脚本为什么会网页无法显示?
制作网站的模板软件,网站怎么建设?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
建站三合一如何选?哪家性价比更高?
建站之星在线版空间:自助建站+智能模板一键生成方案
Swift开发中switch语句值绑定模式
实现点击下箭头变上箭头来回切换的两种方法【推荐】
,网站推广常用方法?
如何用狗爹虚拟主机快速搭建网站?
历史网站制作软件,华为如何找回被删除的网站?
制作网站的基本流程,设计网站的软件是什么?
如何用低价快速搭建高质量网站?
如何通过VPS搭建网站快速盈利?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何通过IIS搭建网站并配置访问权限?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
表情包在线制作网站免费,表情包怎么弄?
如何基于PHP生成高效IDC网络公司建站源码?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
建站之星如何优化SEO以实现高效排名?
如何在云指建站中生成FTP站点?
如何在阿里云购买域名并搭建网站?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
*请认真填写需求信息,我们会在24小时内与您取得联系。