Promise 基础知识

本文部分内容摘自MaskES6关于Promise的用法一文
Promise可以用于解决回调地狱
Promise有三种状态
1.pending 初始状态
2.fulfilled 完成状态
3.rejected 失败状态
Promise 只有两种状态变化
1.操作成功,即有初始状态到完成状态
pending —> fulfilled
2.操作失败,即有初始状态到失败状态
pending —> rejected
状态转化是单向的,已经确定的状态是不可逆的,是不能回到初始状态的
Promise常用方法
1.Promise.prototype.then()
then()方法调用后返回一个promise对象,可以接受两个函数,一个是成功的函数,一个是失败的函数
2.Promise.prototype.catch()
catch()主要捕获异步操作时出现的异常,通常会省略then()方法中的第二个参数,把错误信息的处理控制权放在catch()手中
3.Promise.all()
Promise.all()接受一个参数,但必须是可以迭代的,比如数组
all()通常处理一些并发的异步操作,即结果互不干扰,但又同时进行的异步操作,只有两个状态:成功或失败
all()状态受参数内的状态影响,即里面的状态全是fulfilled,返回的状态才是fulfilled
成功调用后返回的值是一个数组,这个数组是有序的,即按照传入参数的顺序返回结果
4.Promise.race()
Promise.race()接受的参数也必须是可以迭代的
race()状态不完全受参数状态的影响,如果参数里一个值的状态改变了,那么race()的状态就是改变的状态
5.Promise.resolve()
Promise.resolve()接受一个参数,可以是普通的值,具有then()方法的对象和Promise实例。
正常情况下返回的值是fulfilled,但出现解析错误时也会返回rejected
6.Promise.reject()
Promise.reject()也是接受一个参数值,是reason,即发生异常的原因,此时,Promise对象的状态为rejected
总之,除非Promise.then()方法内部抛出异常或者是明确置为rejected态,否则它返回的Promise的状态都是fulfilled态,即完成态,并且它的状态不受它的上一级的状态的影响。
更多的知识点推荐参看阮一峰大神的ECMAScript 6入门一书中讲解Promise的那一章。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复