promi的实现原理
Promi的实现原理
鱿鱼怎么清理干净 Promi是一种异步编程的解决方案,它可以让我们更加方便地处理异步操作,避免了回调地狱的问题。在ES6中,Promi被正式引入,成为了JavaScript中的一等公民。那么,Promi的实现原理是什么呢?
Promi的实现原理可以分为三个部分:状态、值和回调。
状态
Promi有三种状态:pending(等待中)、fulfilled(已完成)和rejected(已拒绝)。当我们创建一个Promi对象时,它的初始状态是pending。当我们调用resolve方法时,Promi的状态会变为fulfilled;当我们调用reject方法时,Promi的状态会变为rejected。
值
春水汇
五言诗句 Promi的值可以是任何JavaScript值,包括undefined、null、数字、字符串、对象等等。当Promi的状态变为fulfilled时,它的值就是resolve方法的参数;当Promi的状态变为rejected时,它的值就是reject方法的参数。
如胶似漆是什么意思
回调
Promi的回调函数有两个参数:resolve和reject。当我们调用resolve方法时,Promi的状态会变为fulfilled,并且会执行then方法中的第一个回调函数;当我们调用reject方法时,Promi的状态会变为rejected,并且会执行then方法中的第二个回调函数。
Promi的实现原理可以用以下代码来表示:
```
class Promi {
constructor(executor) {
this.status = 'pending';
this.value = undefined;钻石怎么辨别真假
ason = undefined;
FulfilledCallbacks = [];
RejectedCallbacks = [];
const resolve = (value) => {
if (this.status === 'pending') {
this.status = 'fulfilled';
this.value = value;
FulfilledCallbacks.forEach((callback) => callback());
}
};
const reject = (reason) => {
if (this.status === 'pending') {
this.status = 'rejected';
ason = reason;
RejectedCallbacks.forEach((callback) => callback());
}
};
try {
executor(resolve, reject);
} catch (error) {
reject(error);
}
}
then(onFulfilled, onRejected) {
onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : (value) => value;
onRejected = typeof onRejected === 'function' ? onRejected : (reason) => { throw reason };
const promi2 = new Promi((resolve, reject) => {
防侧滑>描写小狗的句子 if (this.status === 'fulfilled') {
tTimeout(() => {
try {
const x = onFulfilled(this.value);
resolvePromi(promi2, x, resolve, reject);
} catch (error) {
reject(error);
空心菜的做法 }
}, 0);
} el if (this.status === 'rejected') {
tTimeout(() => {
try {
const x = ason);
resolvePromi(promi2, x, resolve, reject);
} catch (error) {
reject(error);
}
}, 0);
} el {
FulfilledCallbacks.push(() => {
tTimeout(() => {
try {
const x = onFulfilled(this.value);
resolvePromi(promi2, x, resolve, reject);