Ere*_*rez 7 javascript promise
最近,向我展示了一段代码,这些代码是在全栈开发人员访谈中被要求的。它涉及创建一个Promise,应聘者应在其中实现,将其传递给resolve函数,然后将2链接起来。
我试图非常天真地实现Promise只是为了使代码正常工作。创建了一个接受解析器函数的ctor,创建了一个then函数,该函数接受一个回调并返回Promise,并简单地在resolver函数上调用该回调。
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));
Run Code Online (Sandbox Code Playgroud)
预期结果是2,4-就像在真正的Promise上运行一样。但是我得到了2,2。我在弄清楚如何获取第一个“ then”的返回值并将其传递时遇到了麻烦。
小智 3
这是创建 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));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |