0

这段代码我可以大致看懂:
就是then和catch都先执行一边callback

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 })
  );
};

但是有几个疑问:this.then(value,reason)我不是很理解,then里怎么有两个参数?另外这个this指向是啥?

12月3日提问

查看全部 3 个回答

0

标准的Promise.peototype.then本来就是两个参数,第一个是成功的回调,第二个是失败的回调,参见:MDN文档:Promise的“描述”一节;
Promise构造函数不能单独调用,必须用new操作符生成实例,该实例会继承Promise.prototype上的方法,当实例调用这些时,方法中的 this都指向此实例,参见:MDN文档:new 操作符的“描述”一节。

推荐答案

0

已采纳

then 本来就是两个参数,then(onFullfilled, onRejected)

使用 X.finally(....) 调用得时候,this 指向 X

推广链接