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 图片预览效果 推荐
Dec 22 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
jQuery实现的placeholder效果完整实例
Aug 02 Javascript
SVG描边动画
Feb 23 Javascript
jQuery使用bind函数实现绑定多个事件的方法
Oct 11 jQuery
webpack-dev-server自动更新页面方法
Feb 22 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
vue 单页应用和多页应用的优劣
Oct 22 Javascript
vant 中van-list的用法说明
Nov 11 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 if 想到的些问题
2008/03/22 PHP
php 魔术方法使用说明
2009/10/20 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
jQuery代码优化 事件委托篇
2011/11/01 Javascript
常用DOM整理
2015/06/16 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
Python探索之pLSA实现代码
2017/10/25 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
对python中的argv和argc使用详解
2018/12/15 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
详解Python3 基本数据类型
2019/04/19 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
python怎么删除缓存文件
2020/07/19 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
法律专业应届本科毕业生求职信
2013/10/25 职场文书
公司员工的自我评价范例
2013/11/01 职场文书
中专生的个人自我评价
2013/12/11 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
董事长助理岗位职责
2015/02/11 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
初一数学教学反思
2016/02/17 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL