手写原理 | Promise.finally
Promise.finally()返回一个Promise实例,在promise结束时,无论结果是fulfilled还是rejected,都会执行指定的回调函数
应用场景:无论Promise是成功还是失败都会执行,避免了在then和catch各写一次的情况
finally和then(onFinally, onFinally)类似,不同之处在于:
- 调用内联函数时,不需要多次声明该函数或为该函数创建一个变量保存它
- 由于无法知道
promise
的最终状态,所以finally
的回调函数中不接收任何参数,它仅用于无论最终结果如何都要执行的情况 - 与
Promise.resolve(2).then(() => {}, () => {})
(resolved 的结果为undefined
[因为这里的then没有显式的返回语句,所以结果为undefined])不同,Promise.resolve(2).finally(() => {})
resolved 的结果为2
- 同样,
Promise.reject(3).then(() => {}, () => {})
(fulfilled 的结果为undefined
[因为这里的then没有显式的返回语句,所以结果为undefined]),Promise.reject(3).finally(() => {})
rejected 的结果为3
1 | function myPromiseFinally(callback) { |