对象属性
- promiseState:状态
- 未决定:pending
- 成功的:fulfilled
- 失败的:rejected
- promiseResult:保存异步任务处理结果(数据 / 错误信息)
then / catch
- fulfilled 触发
then
- rejected 触发
catch
- 状态取决于返回结果 ~ 即在函数中没有抛出错误状态为
fulfilled
,抛出错误状态为rejected
// PromiseState:rejected
Promise.resolve('ok').then(res => {
throw new Error('error~~~~~~~~~~')
})
// PromiseState:fulfilled
Promise.reject('error').catch(err => {
return err
})
resolve
传入非 Promise 参数返回成功状态的 Promise ,传入 Promise 返回传入 Promise 的执行的结果
Promise.resolve(Promise.reject(1)) // PromiseState:rejected
Promise.resolve(Promise.resolve(1)) // PromiseState:fulfilled
reject
reject:传入非 Promise 参数返回失败状态的 Promise ,传入 Promise 参数结果皆为失败状态
Promise.reject(Promise.reject(1)) // PromiseState:rejected
Promise.reject(Promise.resolve(1)) // PromiseState:rejected
静态方法
- Promise.all
- 所有 promise 成功以数组形式返回所有
promise
的执行结果,状态为fulfilled
- 其中有一个失败则返回第一个失败的结果,状态为失败
- 所有 promise 成功以数组形式返回所有
- Promise.race: 返回最先执行完毕的 promise 的执行的结果,状态为
fulfilled
- Promise.allSettled :以数组形式返回所有
Promise
无论成功或失败的执行结果和状态
async、await
- async
- 函数默认返回 Promise 对象,相当于自动封装成 Promise.resolve(),抛出异常封装成 Promise.reject()
- await
- async 函数中可以没有 await,但 await 必须在 async 函数中
- 可获取 Promise 中的返回结果,相当于 Promise.then
- 可使用 try catch 捕获异常
- 必须等 await 执行完毕方能继续执行 await 之后的代码,相当于同步