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 相关文章推荐
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
jQuery中nextUntil()方法用法实例
Jan 07 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
ES6概念 Symbol toString()方法
Dec 25 Javascript
浅谈Redux中间件的实践
Jul 27 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
Aug 15 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
python对象及面向对象技术详解
2016/07/19 Python
Python使用OpenCV进行标定
2018/05/08 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
应届生.NET方向面试题
2015/05/23 面试题
50道外企软件测试面试题
2014/08/18 面试题
大学毕业生的自我鉴定
2013/11/30 职场文书
个人自荐信
2013/12/05 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
七年级地理教学计划
2015/01/22 职场文书
迟到检讨书
2015/01/26 职场文书
员工自我工作评价
2015/03/06 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书