Promise.prototype.finally()
参数
Promise结束时调用的回调函数。
返回值
Promise对象:通常情况下会返回调用了finally()方法的Promise对象的拷贝。但是当finally()方法中调用throw时,会以指定原因返回rejected状态的Promise对象。如果返回一个rejected状态的Promise对象时,则会返回这个rejectedPromise对象的拷贝。
描述
在Promise结束时,无论其状态为fulfilled或者rejected,都会执行finally()中提供的回调函数。因为无法知道Promise对象的状态是fulfilled还是rejected,所以回调函数没有参数值。当我们在希望一个函数,无论是Promise最后的状态是fulfilled还是rejected时,调用这个方法是很有用的。
例子
const p1 = Promise.resolve(1);
const p2 = p1.finally(() => {});
p2; // Promise {<fulfilled>: 1}
p1 === p2; // false
const p1 = Promise.resolve(1);
const p2 = p1.finally(() => {
return new Error(2);
});
p2; // Promise {<fulfilled>: 1}
const p1 = Promise.resolve(1);
const p2 = p1.finally(() => {
throw new Error(1);
});
p2; // Promise {<rejected>: Error: 1}
const p1 = Promise.resolve(1);
const p2 = Promise.reject(2);
const p3 = p1.finally(() => {
return p2;
});
p3; // Promise {<rejected>: 2}