js promise finally方法实现 promise.prototype.finally

finally方法是ES2018的新特性

finally方法用于指定不管 Promise 对象最后状态如何,都会执行的操作,执行then()和catch()后,都会执行finally指定的回调函数。

使用场景:

比如一个方法在then()和catch()里回调都需要写,那么这个时候只需要在finally()方法里面实现就可以了

使用示例:

this.$ajax(_url, _params)
        .then(() => {
 
        })
        .catch(() => {
 
        })
        .finally(() => {
          // 你的代码
        });
实现方法

目前es6,es5还未支持。可以通过下面两种方式实现

方式1:借助promise.prototype.finally包

npm install promise-prototype-finally
const promiseFinally = require('promise.prototype.finally');
 
// 向 Promise.prototype 增加 finally()
promiseFinally.shim();
 
// 之后就可以按照上面的使用方法使用了
方式2:手动实现finally()

阮老师详解

 

Promise.prototype.finally = function (callback) {
  let P = this.constructor;
  return this.then(
    value  => P.resolve(callback()).then(() => value),
    reason => P.resolve(callback()).then(() => { throw reason })
  );
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值