javascript - Javascript 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()
但它会立即解决。任何帮助将不胜感激
解决方案
立即调用 resolve 函数,尝试如下操作:
Promise.all(array).then(() => {
resolve(1);
});
编辑:我想补充一点,传递给 promise 的 then() 回调的是一个语句,使用 resolve(1) 是执行该代码的调用,但是通过将该函数调用包装在匿名函数声明中,整个传递函数声明,然后在需要时调用。
推荐阅读
- vba - 从组合框到范围的 VBA 值(单元格到最后一列)
- c# - 将所有未经授权的用户重定向到未经授权的视图
- typescript - 如何描述一个类型,以便保存为变量的字符串可以用来索引它?
- powershell - 替换功能正在替换输出中的空行。请改正
- server - 浏览器何时发送“if-match”和“if-unmodified-since”标头?
- java - Java Spring JPA 数据库。表之间的连接
- python - “RuntimeError:mat1 dim 1 必须匹配 mat2 dim 0”PyTorch
- git - 从我的分支/合并请求中删除其他人的提交
- android - 无法在 Android 11 上的 webview 中获取地理位置
- python - 如何在一个购物车中添加多个模型(Django)