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 THICKBOX弹出层插件
Aug 30 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
Jul 13 Javascript
基于jQuery的星级评分插件
Aug 12 Javascript
javascript自然分类法算法实现代码
Oct 11 Javascript
js实现倒计时时钟的示例代码
Dec 17 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
Apr 26 Javascript
JavaScript中的原型prototype完全解析
May 10 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
JavaScript EventEmitter 背后的秘密 完整版
Mar 29 Javascript
原生js实现抽奖小游戏
Jun 27 Javascript
JavaScript Html实现移动端红包雨功能页面
Jan 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
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
微信红包随机生成算法php版
2016/07/21 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
php5与php7的区别点总结
2019/10/11 PHP
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
浅谈django中的认证与登录
2016/10/31 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
工厂门卫的岗位职责
2014/07/27 职场文书
任命书标准格式
2015/03/02 职场文书
提档介绍信范文
2015/10/22 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
CPU不支持Windows11系统怎么办
2021/11/21 数码科技