话不多说上代码
class Promise {
// 构造方法
constructor(executor) {
// 添加属性
this.PromiseState = "pending";
this.PromiseResult = null;
// b保存回调
this.callbacks = [];
// 保存实例对象的this值
const self = this;
// resolve函数
function resolve(data) {
// 判断状态
if (self.PromiseState !== "pending") return;
//1.修改对象的状态 (PromiseState)
self.PromiseState = "fulfilled"; //或者为resolved
//2.设置对象结果值 (PromiseResult)
self.PromiseResult = data;
setTimeout(() => {
self.callbacks.forEach((item) => {
item.onResolved(data);
});
});
}
// reject 函数
function reject(data) {
// 判断状态
if (self.PromiseState !== "pending") return;
//1.修改对象的状态 (PromiseState)
self.PromiseState = "rejected";
//2.设置对象结果值 (PromiseResult)
self.PromiseResult = data;
setTimeout(() => {
self.callbacks.forEach((item) =>

本文通过实例代码展示了如何使用ES6的class类来手动创建一个Promise对象,详细实现了then、catch、finally等原型方法以及resolve、reject、all、race等静态方法。欢迎交流讨论,共同提升前端技能。
最低0.47元/天 解锁文章
837

被折叠的 条评论
为什么被折叠?



