Promise.prototype.finally 的作用,如何自己实现 Promise.prototype.finally

[人工智能] 时间:2025-11-04 20:54:06 来源:益强IT技术网 作者:数据库 点击:18次

本文转载自微信公众号「三分钟学前端」,作用作者sisterAn。何自转载本文请联系三分钟学前端公众号。己实

Promise.prototype.finally() 的作用作用

Promise.prototype.finally() 是 ES2018 新增的特性,企商汇它回一个 Promise ,何自在 promise 结束时,己实无论 Promise 运行成功还是作用失败,都会运行 finally ,何自类似于我们常用的b2b信息网己实 try {...} catch {...} finally {...}

Promise.prototype.finally() 避免了同样的语句需要在 then() 和 catch() 中各写一次的情况

new Promise((resolve, reject) => {   setTimeout(() => resolve("result"), 2000) })   .then(result => console.log(result))   .finally(() => console.log("Promise end")) // result // Promise end 

reject :

new Promise((resolve, reject) => {   throw new Error("error") })   .catch(err => console.log(err))   .finally(() => console.log("Promise end")) // Error: error // Promise end 

注意:

finally 没有参数 finally 会将结果和 error 传递 new Promise((resolve, reject) => {   setTimeout(() => resolve("result"), 2000) })   .finally(() => console.log("Promise ready"))   .then(result => console.log(result)) // Promise ready // result 

手写一个 Promise.prototype.finally()

不管 Promise 对象最后状态如何,都会执行的作用操作

MyPromise.prototype.finally = function (cb) {   return this.then(function (value) {     return MyPromise.resolve(cb()).then(function () {       return value     })   }, function (err) {     return MyPromise.resolve(cb()).then(function () {       throw err     })   }) } 

来自:https://github.com/sisterAn/blog

(责任编辑:人工智能)

    相关内容
    精彩推荐
    热门点击
    友情链接