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 相关文章推荐
借用Google的Javascript API Loader来加速你的网站
Jan 28 Javascript
javascript 读取xml,写入xml 实现代码
Jul 10 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
JS仿flash上传头像效果实现代码
Jul 18 Javascript
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
javascript动态的改变IFrame的高度实现自动伸展
Oct 12 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
May 17 Javascript
将List对象列表转换成JSON格式的类实现方法
Jul 04 Javascript
JavaScript实现in-place思想的快速排序方法
Aug 07 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
JavaScript实现随机点名器实例详解
May 07 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
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循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
js动态引入的四种方法
2018/05/05 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
Python的净值数据接口调用示例分享
2016/03/15 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
客服主管岗位职责
2013/12/13 职场文书
教师个人剖析材料
2014/02/05 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
企业环保标语
2014/06/10 职场文书
安全目标责任书
2014/07/22 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
继承权公证书范本
2015/01/23 职场文书
心理健康教育主题班会
2015/08/13 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书