异步处理方案
Promise.all([xx,xx,xx])
检测所有传入all中的promise对象,等待所有promise执行,当有一个返回rejected,则all方法返回rejected的promise对象
当所有的promise对象全部为fulfilled的时候
则all方法返回fulfilled状态的promise对象
当Promise.all方法返回一个成功状态的promise对象的时候,他的PromiseResult的值是一个数组,保存的时候all方法中所有promise对象resolve的输出的值
当Promise.all方法返回一个失败状态的promise对象的时候,他的promise状态就是第一个失败的promise的状态
使用promise.race([XXX,XXX,XXX])
race方法返回promise对象,promise对象的状态是race中第一个执行完成的那个promise的状态(无论成功还是失败)
只要里边的promise对象没有执行完成,则allSettled返回pending状态的promise对象
只要里边的promise对象全部完成了,则allSettled返回fulfilled状态的promise对象(无论是否所有的promise都失败了)
当所有的请求完成,allSettled的状态值就是成功,allSettled的value就是一个数组,包含了所有的方法内返回promise对象
then方法中有两个参数,都是函数,第一个函数是成功处理函数,第二个函数是失败处理函数,但是一般不用第二个
then中的函数如果 没有书写return
或者promise等,那么本身返回一个promise的fulfilled状态的对象,(promiseResult:undefined)
then中的函数,如果返回一个promise对象,then的返回值就是这个promise对象,promise对象的状态和内部返回的promise状态一致
then中的函数,返回值不是一个promise对象,则then还是返回成功状态的promise对象,但是PR值就是这个返回的值(promiseResult:return的值)
如果then中的函数出错了(有异常了),则then返回一个失败的promise对象
无论promise返回成功还是失败,都会执行finally方法
• Promise {<pending>}见下面调用状态
如果promise是成功状态调用的,则finally返回成功状态
• [[PromiseState]]: “fulfilled” [[PromiseResult]]: 返回值
如果promise是失败状态调用的,则finally返回失败状态
• [[PromiseState]]: “rejected” [[PromiseResult]]: “错误信息”
初始化状态
• 异步代码还在执行中
•
Promise正在执行,或者你没有调用成功失败函数,那么promise的状态将一直都是pending
•
当代码正在执行的时候,promise中的值是{PromiseState:pending,PromiseResult:undefined}
成功状态
•
异步代码执行成功了,调用resolve函数,可以将promise对象的状态由pending变成resolved
失败状态
•
异步代码执行失败了,调用reject函数,可以将promise对象的状态由pedding变成rejected
resolve的参数就是异步代码执行成功后需要给promise的数据
reject的参数就是异步代码执行失败的错误信息 发送给promise对象