我试图在 promise 中返回 promise ,但无法让它发挥作用 这是我的代码
async function main() {
return new Promise((resolve, reject) => {
p = new Promise((resolve, reject) => {
f2(async() => {
resolve();
});
});
array = [];
array.push(p);
Promise.all(array).then(resolve(1));
});
}
setTimeout(async() => {
console.log(await main());
}, 0);
function f2(callback) {
console.log("h called");
setTimeout(() => {
callback();
}, 4000);
}
我预计该数组将在 f2()
超时后解析,但它会立即解析。
任何帮助将不胜感激
最佳答案
解析函数正在被立即调用,尝试这样的事情:
Promise.all(array).then(() => {
resolve(1);
});
编辑:我想补充一点,传递给promise的then()回调的是一个语句,使用resolve(1)是执行该代码的调用,但是通过将该函数调用包装在匿名函数声明中,传递整个函数声明,然后在需要时调用。
关于Javascript Promise 链接未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61255906/