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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
网页中的图片的处理方法与代码
Nov 26 Javascript
jQuery源码分析之Event事件分析
Jun 07 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
Angularjs 基础入门
Dec 26 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
Aug 27 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
layui.js实现的表单验证功能示例
Nov 15 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
webpack中的模式(mode)使用详解
Feb 20 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模板技术[转]
2007/01/04 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
Node.js实现文件上传
2016/07/05 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
给排水专业应届生求职信
2013/10/12 职场文书
统计员岗位职责
2013/11/14 职场文书
企业标语大全
2014/07/01 职场文书
车间核算员岗位职责
2014/07/01 职场文书
小石潭记导游词
2015/02/03 职场文书
初中思想品德教学反思
2016/02/24 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
python套接字socket通信
2022/04/01 Python