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宝典学习笔记(下)
Jan 10 Javascript
用jscript启动sqlserver
Jun 21 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
Nov 14 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
Feb 20 Javascript
Javascript中的关键字和保留字整理
Oct 16 Javascript
多个jQuery版本共存的处理方案
Mar 17 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
Jul 12 jQuery
国内常用的js类库大全(CDN公共库)
Jun 24 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
详解Python3 pickle模块用法
2019/09/16 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
大学生学习自我评价
2014/01/13 职场文书
2014学年自我鉴定
2014/02/23 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书