Promise.resolve实现
class MyPromise {
...
static resolve (value) {
if (value instanceof MyPromise) return value;
return new MyPromise(resolve => resolve(value));
}
}
promise.finally实现
class MyPromise {
...
finally (callback) {
return this.then(value => {
// 考虑callback为异步时,需要转换为promise
MyPromise.resolve(callback()).then(() => value);
}, reason => {
MyPromise.resolve(callback()).then(() => { throw reason });
})
}
}
promise.catch实现
class MyPromise {
...
catch (failCallback) {
return this.then(undefined, failCallback)
}
}