1.请实现Promise.finally方法
Promise.prototype.finally = function(cb) {
return this.then((value) => {
//链式调用的情况下,如果第一次then返回的是成功的promise或者常量,直接将值返回
return Promise.resolve(cb()).then(() => {
return value;
});
}, (err) => {
//链式调用的情况下,如果第一次then返回的是失败的promise或者抛出了错误,在调用finally的回调后,抛出异常,以便走到下一个then的失败
return Promise.resolve(cb()).then(() => {
throw err;
});
});
}
2.请实现Promise.race方法
只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。即谁快 用谁
function isPromise<