我不明白这个javascript问题的答案,有人可以解释一下吗?

问题描述 投票:0回答:1

我正在练习使用 Adaface 进行面试评估 (https://www.adaface.com/assessment-test/javascript-online-test)。

问题是这段代码的输出是什么:

function after5s(x) {
  return new Promise(res => {
    setTimeout(() => {
      res(x);
    }, 5000);
  });
}

async function mult(input) {
  const f = await after5s(3);
  const g = await after5s(4);
  return input * f * g;
}

mult(2).then(value => {
  console.log(value);
});

async function second_mult(input) {
  const f = after5s(3);
  const g = after5s(4);
  return input * await f * await g;
}

second_mult(2).then(value => {
  console.log(value);
});

我认为这个问题的答案是等待10秒并输出24,然后等待5秒再输出24,但他们说正确的答案是:5秒后24,再过5秒,另一个24

javascript async-await promise
1个回答
0
投票

我认为这个问题的答案是等待10秒并输出24,然后等待5秒再输出24

他们希望您注意的微妙部分是,并未等待“顶级”操作。 所以你是对的,这需要 10 秒: mult(2).then(value => { console.log(value); });

你是对的,这需要 5 秒:

second_mult(2).then(value => { console.log(value); });

但是,它们都被“立即”调用并且都开始等待。  因此,5 秒后,后一个打印其输出,然后在
另一个

5 秒(总共 10 秒)后,前一个打印其输出。

© www.soinside.com 2019 - 2024. All rights reserved.