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 相关文章推荐
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
Javascript表单验证要注意的事项
Sep 29 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
jQuery生成假加载动画效果
Dec 01 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
Feb 10 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
Sep 13 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
使用prototype.js进行异步操作
2007/02/07 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
layUI实现前端分页和后端分页
2019/07/27 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
python对url格式解析的方法
2015/05/13 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
Python: 传递列表副本方式
2019/12/19 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
护士自我鉴定
2013/10/23 职场文书
八一建军节演讲稿
2014/09/10 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers