Javascript Promise 链接未按预期工作

标签 javascript promise async-await

我试图在 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/

相关文章:

javascript - 如何从 extjs4 中的商店获取值

javascript - div 内的 getElementById

javascript - 将 req 数据传递到 Q Promise

c# - Task.WaitAny() — 检查结果

javascript - 使用 Node javascript 出现意外 token 非法

Javascript - 如何使用 'a' 作为变量使 'href' 元素成为链接

javascript - 将回调转换为 Promise

typescript - 类图中的 Promise

c# - async Task<object> 函数死锁

c# - 取消 HttpClient 请求 - 为什么 TaskCanceledException.CancellationToken.IsCancellationRequested 为假?