finally其实也是一个 then,不管成功或失败都会调用
finally实现原理
Promise.prototype.finally = function(callback) {return this.then(val => {// 如果callback是个 promise,要等待 传入的promise执行后,再返回结果return Promise.resolve(callback().then(() => val))// callback();// return val; // 如果上一个 then成功,就将这个成功态向下传递}, err => {return Promise.resole(callback().then(() => throw err))// callback();// throw err; // 如果上一个 then是失败态,就将这个失败向下传递})}
usage
Promise.reject().finally(() => {return new Promise((resolve, reject) => {setTimeout(() => resolve() , 1000)})}).catch(err => err)
