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 相关文章推荐
javascript offsetX与layerX区别
Mar 12 Javascript
javascipt基础内容--需要注意的细节
Apr 10 Javascript
js中parseInt函数浅谈
Jul 31 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
jQuery中:visible选择器用法实例
Dec 30 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
简单谈谈gulp-changed插件
Feb 21 Javascript
如何更好的编写js async函数
May 13 Javascript
JavaScript 反射学习技巧
Oct 16 Javascript
详解Vue router路由
Nov 20 Vue.js
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
实现获取http内容的php函数分享
2014/02/16 PHP
PHP面向对象精要总结
2014/11/07 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
php文件系统处理方法小结
2016/05/23 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python简单验证码识别的实现方法
2019/05/10 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
详解Python 循环嵌套
2020/07/09 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
python中的时区问题
2021/01/14 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
运动会通讯稿500字
2014/02/20 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
质检员岗位职责范本
2015/04/07 职场文书
介绍信范文大全
2015/05/07 职场文书