eventLoop那里Promise对象的产生的回调应该放到微队列中,但是不知道该怎么实现,所以放到了宏队列中(有大佬知道的话劳请告知,哪里看不懂可以把问题放到评论区或者私信我,看到就回)
const MyPromise = (() => {
const PENDING = 'pending',
RESOLVED = 'resolved',
REJECTED = 'rejected',
MyPromiseStatus = Symbol('MyPromiseStatus'),
MyPromiseValue = Symbol('MyPromiseValue'),
changeStatus = Symbol('changeStatus'),
thenables = Symbol('thenable'), //thenable 业队列
catchables = Symbol('catchable'), /catchable作业队列
subsequentHandle = Symbol('subsequentHandle')//后续处理函数的封装
linkPromise = Symbol('linkPromise');
return class {
/**
* 将Promise从未决状态推向已决状态时,改变状的函数
* @param {*} data 状态数据
* @param {*} immediatelyStatus 推向已决状态应该所处的状态
* @param {*} targetStatus 将要推向的状态
* @returns
*/
[changeStatus](value, targetStatus, queue) {
// 如果状态是pending
if (this[MyPromiseStatus] !== PENDING) {
return;
}
// 状态是已决态
this[MyPromiseStatus] = targetStatus;
this[MyPromiseValue] = value;
// 遍历执行作业队列中的处理函数
queue.forEach(handle => handle(thi[MyPromiseValue]))
}
constructor(untreated) {
// untreated表示未决阶段的处理函数
this[MyPromiseStatus] = PENDING;
this[MyPromiseValue] = undefined;
this[thenables] = [];
this[catch