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实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
jquery+html5制作超酷的圆盘时钟表
Apr 14 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
Jan 04 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
Jan 08 Javascript
Node.js调试技术总结分享
Mar 12 Javascript
knockoutjs模板实现树形结构列表
Jul 31 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
select2 ajax 设置默认值,初始值的方法
Aug 09 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
JavaScript实现矩形块大小任意缩放
Aug 25 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数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python解决字典中的值是列表问题的方法
2013/03/04 Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Ibatis的核心配置文件都有什么
2014/09/08 面试题
历史教育专业个人求职信
2013/12/13 职场文书
护士医德医风自我评价
2014/09/15 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
表扬信格式模板
2015/05/05 职场文书
关于迟到的检讨书
2015/05/06 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫