【发布时间】:2022-01-03 18:46:17
【问题描述】:
我正在尝试解决 getABC 函数中的承诺,但本地 const 变量 b 返回未定义。如何实现 getB 函数使用的回调函数,使其返回值为 'B' 的解构数组项。
const [A, B, C] = ['A', 'B', 'C'];
function getA() {
return A;
}
function getB(callback) {
setTimeout(() => {
callback(B);
}, 10);
}
function getC() {
return Promise.resolve().then(() => C);
}
function getABC() {
return new Promise((resolve, reject) => {
const a = getA();
const b = getB(b => b);
const c = getC().then(item => item).catch(err => console.log(err));
resolve([a, b, c])
});
}
getABC().then((arr) => console.log(arr));
【问题讨论】:
-
您的
getB不会返回任何内容。你只需给它一个基本上什么都不做的回调。它只是在 10 毫秒后被调用。是否意味着 10 毫秒后真正解决承诺? -
getB 是为了返回全局变量 B。
-
function getABC() { return Promise.all([getA(), new Promise(getB), getC()]); }但实际上你应该只更改getB的实现以返回承诺而不是接受回调。 -
代码是针对编码挑战的,所以我没有写。
-
@MoonShine - “我正在尝试解决promise in” & “如何实现回调函数” - 它看起来像你是根据你的问题写的 - 不管怎样,Bergi 非常直接地回答了你写的问题。
标签: javascript function asynchronous callback