Open chunhuile opened 3 months ago
测试上面的案例的代码:
let p = new MyPromise((resolve, reject) => {
setTimeout(() => {
resolve('Success!');
}, 1000);
});
p.then((value) => {
console.log(value); // 输出 'Success!'
return 'Next step';
}).then((nextValue) => {
console.log(nextValue); // 输出 'Next step'
});
关键点解析 状态管理
pending:初始状态,表示未完成。 fulfilled:成功状态。 rejected:失败状态。 resolve 和 reject 方法会改变 Promise 的状态,一旦状态改变,就不能再次修改。 回调队列
在 pending 状态时,将 then 的回调函数存入队列,等到状态变为 fulfilled 或 rejected 时,再执行对应的回调。 then 方法
then 方法返回一个新的 Promise,支持链式调用。 内部使用 setTimeout 来模拟微任务,以确保回调是异步执行的。 异常处理
try/catch 块用于捕获执行回调时的异常,并且在异常时调用 reject。
`
`