14、手写模拟实现 Promise

首先 Promise.finally 的作用是:无论 Promise 的状态成功与否,都会进入 finally 中

1
2
3
4
5
6
7
8
9
10
11
12
13
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1)
}, 5000)
})

p1.then(res => {
console.log(res) // 1
}).catch(err => {
console.log(err)
}).finally(() => { // 不接受参数
console.log('无论Promise的结果如何,这段代码总会被执行');
})

手写 Promise.finally:

1
2
3
4
5
6
7
8
9
Promise.prototype.finally = function(cb) {
return this.then(res => {
return Promise.resolve(cb()).then(() => res)
}, err => {
return Promise.resolve(cb()).then(() => {
throw err
})
})
}

14、手写模拟实现 Promise
https://mrhzq.github.io/职业上一二事/前端面试/每日一题/14、手写模拟实现 Promise.finally/
作者
黄智强
发布于
2024年1月23日
许可协议