
- Promise 有pending、fulfilled、rejected 三种状态
- Promise 的状态只能从 pending 到 fulfilled 或 rejected,一旦状态敲定,就不可以更改了
<script>
const PENDING = "pending";
const FULFILLED = "fulfilled";
const REJECTED = "rejected";
class FXPromise {
state = PENDING;
result = undefined;
constructor(fn) {
const resolveFunc = (res) => {
if (this.state === PENDING) {
this.result = res;
this.state = FULFILLED;
console.log("resolve ", res);
}
};
const rejectFunc = (res) => {
if (this.state === PENDING) {
this.result = res;
this.state = REJECTED;
console.log("reject ", res);
}
};
fn(resolveFunc, rejectFunc);
}
}
new FXPromise((resolve, reject) => {
console.log(1);
reject(222);
resolve(111);
});
</script>
