前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript第十七弹——ES6(6)带你理解Promise

JavaScript第十七弹——ES6(6)带你理解Promise

作者头像
萌兔IT
发布2019-07-25 17:10:49
3410
发布2019-07-25 17:10:49
举报
文章被收录于专栏:萌兔it萌兔it

Hello小伙伴们,今天和大家分享的是Promise对象!

Promise

Promise基础用法

Promise是什么呢,是用来解决异步编程的一种方案。相比于传统层层嵌套的解决方法,能够将异步操作以同步操作的流程表达出来,更加清晰。但是,Promise一旦被建立,就会被执行,而无法中途取消。

Promise的特点:

1)对象的状态不受外界影响,当异步操作产生结果的时候,就会决定操作状态:pending、fulfilled和rejected三种状态,分别代表正在进行中、操作已经成功、操作失败了。

2)而且状态只能从pending到fulfilled和从pending到rejected两种状态,一旦状态变为这两种,就不能够再改变了。

Promise实例的创建:

Promise对象能够接收resolve和reject作为参数,异步操作成功的时候,resolve能够将Promise对象的状态从pending到resolve;异步操作失败的时候,从pending变为rejected。

Promise常用方法

(一)then(), catch(), finally():(有点像抛出异常的时候try,catch,finally)。

1)then():首先要介绍的是then方法,它实现了异步操作的链式写法。它的作用就是为Promise实例添加状态改变的时候的回调函数,then方法返回下一个Promise对象。

接着上段代码:

2)catch():与抛出异常一样,catch被用做发生错误时的回调函数。

3)finally():用于指定Promise对象无论状态如何都会执行的操作。这个不是ES2015中的,而是ES2018中的。

(二)resolve(), reject()

1)resolve():我们往往会遇到需要将对象转为Promise对象的需要,这时候resolve就可以派上用场:

Promise.resolve('rabbit');

2)reject():同样会返回一个Promise对象,不同的是返回的是rejected状态的实例。

Promise.reject('error');

(三)all(), race()

1)all():用于将多个 Promise 实例,包装成一个新的 Promise 实例。当我们有一系列的实例同时满足某一种状态才能触发后面的操作时,我们就可以用all了:比如这个例子就是只有这6个数都完成了*2操作,才能够进行下一步:

2)race():还是是将多个 Promise 实例,包装成一个新的 Promise 实例。不同的是,all是一个and的关系,而race是一个or的关系,有一个改变状态,promise对象就可以改变状态。

好啦~今天的分享就到这里啦,小伙伴们弄懂Promise了吗,这可是我们后面分享的基础哦,一定要看明白呢~喜欢兔妞的文章就请关注+在看吧~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌兔it 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档