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 操作文件 实现方法小结
Jul 02 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 Javascript
jquery事件绑定解绑机制源码解析
Sep 19 Javascript
输入框点击时边框变色效果的实现方法
Dec 26 Javascript
Webpack中css-loader和less-loader的使用教程
Apr 27 Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 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/06/19 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
PHP打印输出函数汇总
2016/08/28 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python的IDEL增加清屏功能实例
2017/06/19 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
零基础学python应该从哪里入手
2020/08/11 Python
详解python中的异常和文件读写
2021/01/03 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
我们的节日中秋节活动总结
2015/03/23 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
开工典礼致辞
2015/07/29 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
Node实现搜索框进行模糊查询
2021/06/28 Javascript