Promise.prototype.then()
方法返回一个 Promise . 它最多需要两个参数: Promise 的成功和失败情况的回调函数.
1 | const promise1 = new Promise((resolve, reject) => { |
Promise.prototype.catch()
方法返回一个 Promise , 并且处理拒绝的情况. 它的行为与调用 Promise.prototype.then(undefined, onRejected) 相同
(事实上 calling obj.catch(onRejected) 内部calls obj.then(undefined, onRejected))
1 | const p1 = new Promise((resolve, reject) => { setTimeout(reject, 100, 'foo') }) |
对照
1 | const p2 = new Promise((resolve, reject) => { setTimeout(resolve, 100, 'foo') }) |
Promise.prototype.finally()
1 | const p1 = new Promise((resolve, reject) => { setTimeout(reject, 100, 'foo') }) |
对照
1 | const p2 = new Promise((resolve, reject) => { setTimeout(resolve, 100, 'foo') }) |
Promise.all()
方法返回一个 Promise 实例,此实例 iterable 参数内所有的 Promise 都完成(resolved)或参数中不包含 Promise 时回调完成(resolve); 如果参数中 Promise 有一个失败(rejected), 此示例回调失败(reject), 失败的原因是第一个失败 Promise 的结果.
他通常在启动多个异步任务并发运行并为其结果创建承诺之后使用, 以便人们可以等待所有任务完成.
接收一个 数组 作为入参
1 | const promise1 = Promise.resolve(4) |
Promise.allSettled()
方法返回一个在所有给定的 Promise 已被决议或被拒绝后决议的 Promise , 并带有一个对象数组, 每个对象表示对应的 Promise 结果.
1 | const promise1 = Promise.resolve(4) |
Promise.any()
方法接收一个 Promise 可迭代对象,只要其中的一个 Promise 完成, 就返回那个已经有完成值的 Promise . 如果可迭代对象中没有一个 Promise 完成(即所有的 Promise 都失败或者拒绝) , 就返回一个拒绝的 Promise , 返回值还有待商榷: 无非是拒绝原因数组或 AggregateError 类型的实例, 他是Error的一个子类,用于把单一的错误集合在一起. 本质上这个方法和Promise.all是相反的.
这个方法是实验性的,尚未被所有的浏览器完全支持, 暂无法验证
Promise.race()
方法返回一个 Promise 对象, 一旦迭代器中的某个 Promise 解决或者拒绝, 返回的 Promise 就会解决或者拒绝
1 | const promise1 = Promise.resolve(4) |
Promise.resolve()
方法返回一个以给定值解析后的 Promise 对象. 如果这个值是一个 Promise ,那么将返回这个 promise . 如果这个值是 痛恨able (即带有 then 方法) , 返回的 promise 会跟随这个 thenable 的对象,采用他的最终状态, 否则返回的 promise 将以此值完成. 此函数将类 promise 对象的多层嵌套展平. 传入参数是一个基础值则返回这个基础值.
警告: 不要在解析为自身的 thenable 上调用 Promise.resolve. 这将导致无限递归, 因为他试图展平无限嵌套的 promise .
1 | const promise1 = Promise.resolve(123); |
Promise.reject()
返回一个带有拒绝原因的 Promise 对象
1 | function resolved(result) { |