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 相关文章推荐
Jquery中获取iframe的代码
Jan 11 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
Javascript中的数组常用方法解析
Jun 17 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
Feb 22 Javascript
JS变量及其作用域
Mar 29 Javascript
详解vue过滤器在v2.0版本用法
Jun 01 Javascript
Javascript中parseInt的正确使用方式
Oct 17 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
基于JQuery实现页面定时弹出广告
May 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学习教程之第2天
2008/06/15 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
php 团购折扣计算公式
2011/11/24 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
python使用SMTP发送qq或sina邮件
2017/10/21 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
python爬取网易云音乐评论
2018/11/16 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python中dict()的高级用法实现
2019/11/13 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
Python常用类型转换实现代码实例
2020/07/28 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
大学生个人求职信范文
2013/09/21 职场文书
工程师岗位职责规定
2014/02/26 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
要账委托书范本
2014/09/15 职场文书
责任书格式
2015/01/29 职场文书
幼儿园心得体会范文
2016/01/21 职场文书