Skip to content

Commit ae9be82

Browse files
committed
feat:then方法中调用resolvePromise
1 parent 2d5a7f8 commit ae9be82

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

index.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,25 @@ MyPromise.prototype.then = function (onFulfilled, onRejected) {
5151
onRejected = typeof onRejected === 'function'? onRejected:function(err) {
5252
throw err;
5353
}
54-
let promise2 = new Promise((resolve, reject) => {
55-
// todo
54+
let promise2 = new MyPromise((resolve,reject) => {
55+
if(_this.state === FULFILLED){
56+
let x = onFilfulled(_this.value);
57+
resolvePromise(promise2,x,resolve,reject);
58+
}
59+
if(_this.state === REJECTED) {
60+
let x = onRejected(_this.reason);
61+
resolvePromise(promise2,x,resolve,reject);
62+
}
63+
if(_this.state === PENDING) {
64+
_this.onFilFulledCallbacks.push(function() {
65+
let x = onFilfulled(_this.value);
66+
resolvePromise(promise2,x,resolve,reject);
67+
});
68+
_this.onRejectedCallbacks.push(function(){
69+
let x = onRejected(_this.reason);
70+
resolvePromise(promise2,x,resolve,reject);
71+
});
72+
}
5673
});
5774
return promise2;
5875
};

0 commit comments

Comments
 (0)