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学习笔记5 类和对象
Jan 11 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 Javascript
javascript的解析执行顺序在各个浏览器中的不同
Mar 17 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
Jan 21 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
vue.js中toast用法及使用toast弹框的实例代码
Aug 27 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
详解如何运行vue项目
Apr 15 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
Vuex实现数据共享的方法
Dec 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获取表单所有复选框的值的方法
2014/08/28 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
python列表操作实例
2015/01/14 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
大一新生军训时的自我评价分享
2013/12/05 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
品牌转让协议书
2014/08/20 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
高校教师个人总结
2015/02/10 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
python文件目录操作之os模块
2021/05/08 Python
Python Parser的用法
2021/05/12 Python
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
利用python调用摄像头的实例分析
2021/06/07 Python
vue中div禁止点击事件的实现
2022/04/02 Vue.js