gpt4 book ai didi

javascript - 简单的 promise 然后实现

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:34 24 4
gpt4 key购买 nike

最近,有人向我展示了一段在全栈开发人员面试中被问到的代码。它涉及创建一个 promise ,候选人应该在其中实现,传递给它一个解析函数,然后链接 2 个。

我尝试非常天真地实现 Promise 只是为了让代码工作。创建了一个接受解析器函数的构造函数,创建了一个接受回调并返回 Promise 的 Then 函数,并简单地调用解析器函数的回调。

class MyPromise {

constructor(resolver) {
this.resolver = resolver;
}

then(callback) {
const result = new MyPromise(callback);
this.resolver(callback);

return result;
}
}

promise = new MyPromise(
(result) => {
setTimeout(result(2), 500);
});
promise.then(result => {
console.log(result);
return 2 * result;
}).then(result => console.log(result));

预期结果是 2,4 - 就像使用真正的 Promise 操作一样。但我得到 2,2。我无法弄清楚如何获取第一个“then”的返回值并将其传递。

最佳答案

这是创建 promise 类的简短代码,

class MyPromise {
constructor(executor) {
this.callbacks = [];

const resolve = res => {
for (const { callback } of this.callbacks) {
callback(res);
}
};

executor(resolve);
}

then(callback) {
return new MyPromise((resolve) => {
const done = res => {
resolve(callback(res));
};
this.callbacks.push({ callback: done });
});
}
}


promise = new MyPromise((resolve) => {
setTimeout(() => resolve(2), 1000);
});

promise.then(result => {
console.log(result);
return 2 * result;
}).then(result => console.log(result));

关于javascript - 简单的 promise 然后实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55534069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com