求帮忙解释一下finally的实现代码?

这段代码我可以大致看懂:
就是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指向是啥?

阅读 183
评论
    3 个回答
    • 2.2k

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