const { error } = require("console");
const PENDING = 'pending';
const FULFILLED = 'fuifilled';
const REJECTED = 'reject';
class MyPromise {
/**
* 创建一个Promise
* @param {Function} executor 任务执行器,立即执行
*/
constructor(executor) {
this._state = PENDING;
this._value = undefined;
try {
executor(this._resolve.bind(this), this._resolve.bind(this));
} catch (error) {
this._reject(error)
}
}
/**
*
* @param {String} newState
* @param {any} value
*/
_changeState(newState, value) {
if (this._state !== PENDING) {
return;
}
this._state = newState;
this._value = value;
}
/**
*
* 标记当前任务完成
* @param{any } data 任务完成的相关数据
*/
_resolve(data) {
this._changeState(FULFILLED, data)
}
/**
* 标记当前任务失败
* @param{any} reason 任务失败的相关数据
*/
_reject(reason) {
this._changeState(REJECTED, reason)
}
}
const pro = new MyPromise((resolve, reject) => {
throw 12;
})
console.log(pro)
手写Promise 笔记
最新推荐文章于 2024-11-06 23:06:53 发布
本文详细介绍了JavaScript中的Promise类,包括构造函数、executor的使用、状态(pending、fulfilled、rejected)的管理以及resolve和reject方法。以实例展示了如何创建并处理Promise对象。
摘要由CSDN通过智能技术生成