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了吗,这可是我们后面分享的基础哦,一定要看明白呢~喜欢兔妞的文章就请关注+在看吧~