ES6 Promise对象概念与用法分析


Posted in Javascript onApril 01, 2017

本文实例讲述了ES6 Promise对象概念与用法。分享给大家供大家参考,具体如下:

1.Promise概念

Promise 对象有三种状态:

① Fulfilled 可以理解为成功的状态
② Rejected 可以理解为失败的状态
③ Pending 既不是 Fulfilld 也不是 Rejected 的状态,可以理解为 Promise 对象实例创建时候的初始状态

2.三个重要方法

在 Promise 对象当中有三个重要方法————resolve, reject和then。

resolve 方法可以使 Promise 对象的状态改变成成功,同时传递一个参数用于后续成功后的操作,在这个例子当中就是 Hello World!字符串。

reject 方法则是将 Promise 对象的状态改变为失败,同时将错误的信息传递到后续错误处理的操作。

function printHello (ready) {
 return new Promise(function (resolve, reject) {
 if (ready) {
  resolve("Hello");
 } else {
 reject("Good bye!");
}
});
}
function printWorld () {
alert("World");
}
function printExclamation () {
alert("!");
}
printHello(true)
.then(function(message){
alert(message);
})
.then(printWorld)
.then(printExclamation); //分别弹出 Hello World !三个弹窗

上述例子通过链式调用的方式,按顺序打印出了相应的内容。then 可以使用链式调用的写法原因在于,每一次执行该方法时总是会返回一个 Promise 对象。另外,在 then onFulfilled 的函数当中的返回值,可以作为后续操作的参数,因此上面的例子也可以写成:

function printHello (ready) {
 return new Promise(function (resolve, reject) {
 if (ready) {
  resolve("Hello");
 } else {
 reject("Good bye!");
}
});
}
printHello(true).then(function (message) {
 return message;
}).then(function (message) {
 return message + ' World';
}).then(function (message) {
 return message + '!';
}).then(function (message) {
alert(message);
}); //一个弹窗 Hello World !

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
完整显示当前日期和时间的JS代码
Sep 17 Javascript
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
Apr 12 Javascript
node.js中的fs.linkSync方法使用说明
Dec 15 Javascript
使用bootstrap3开发响应式网站
May 12 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
AngularJS入门之动画
Jul 27 Javascript
基于JS实现限时抢购倒计时间表代码
May 09 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
小程序如何使用分包加载的实现方法
May 22 Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
JavaScript中闭包的详解
Apr 01 #Javascript
基于JavaScript实现验证码功能
Apr 01 #Javascript
AngularJS1.X学习笔记2-数据绑定详解
Apr 01 #Javascript
Angularjs使用指令做表单校验的方法
Mar 31 #Javascript
JS正则获取HTML元素的方法
Mar 31 #Javascript
JS+CSS实现下拉刷新/上拉加载插件
Mar 31 #Javascript
ES6中Generator与异步操作实例分析
Mar 31 #Javascript
You might like
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php笔记之:AOP的应用
2013/04/24 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
PHP中使用curl入门教程
2015/07/02 PHP
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
Python实现的金山快盘的签到程序
2013/01/17 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
django settings.py 配置文件及介绍
2019/07/15 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
美工的岗位职责
2013/11/14 职场文书
银行办理业务介绍信
2014/01/18 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
大学英语专业求职信
2014/06/21 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
建党伟业观后感
2015/06/01 职场文书
湘江北去观后感
2015/06/15 职场文书
同意报考公务员证明
2015/06/17 职场文书
律师催款函范文
2015/06/24 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android