Promise语法
new Promise((resolve,reject) => {...})
Promise对象表示一个异步操作的最终状态(完成或失败)。
为什么需要Promise
Promise是为了解决异步函数多重嵌套的问题(回调地狱)。
参数
一个回调函数,其中包含了两个参数,resolve,reject。
当回调函数内部正常执行之后,回调用resolve函数,不过,一旦发生error,则返回值会被忽略,执行reject函数。
描述
一个Promise对象有下面几种状态:
- pending:初始化状态
- fulfilled:回调执行成功
- rejected:回调执行中出现异常
方法
Promise.resolve(val)
Promise正常执行完成后调用,返回一个状态值val,决定Promise对象。
- 返回一个Promise对象,直接返回该对象
- 返回带有then方法的对象,返回Promise对象最终状态由then执行
- 返回的值val为空,则返回一个状态为fulfilled的Promise对象
- 一般情况,当你不知道一个值是否为Promise对象,使用Promise.resolve(val)进行包装
Promise.reject(val)
返回一个状态为resolve的Promise对象
Promise.all([])
返回一个状态为失败的Promise对象,传入一个可以迭代的对象,当iterable全部为fulfilled时,返回一个resolve状态
- 传入一个空的可迭代对象,则返回resolve状态的Promise对象
- 传入的参数不包含任何Promise,则返回一个resolve状态的Promise对象
- 只要有一个可迭代对象返回reject,则返回状态为reject的Promise对象
- 其他情况下,返回一个pending(处理中)的Promise对象
Promise.race(iterable)
返回一个Promise对象,一旦迭代器对象中的某个Promise返回resolve或reject,则返回的Promise对象会立刻改为同一个状态。
Promise.catch(reject)
处理返回状态为reject的Promise对象
Promise.finally(resolve|reject)
无论返回的Promise对象状态为resolve或reject,都将会执行finally函数
参考链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise