等待分配给变量的承诺

Tin*_*s K 5 javascript async-await es6-promise

考虑下面的代码,

// Function which returns a promise and resolves in 2 seconds
const promiseFunction = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
};

// Asynchronous function 1
const asyncFunction1 = async() => {
    console.log(await promiseFunction());
    console.log(await promiseFunction());
    console.log(await promiseFunction());
}

// Asynchronous function 2
const asyncFunction2 = async() => {
    let a = promiseFunction();
    let b = promiseFunction();
    let c = promiseFunction();

    console.log(await a);
    console.log(await b);
    console.log(await c);
}
Run Code Online (Sandbox Code Playgroud)

我试图了解 asyncFunction1 和 asyncFunction2 执行之间的行为,当未分配给变量时,asyncFunction1 每次等待(总共 6 次)需要 2 秒,但 asyncFunction2 在分配给变量时总共 2 秒解析所有 3 个承诺,什么当它被分配给一个变量时会发生在这里吗?(我们仍然使用 await 与变量)。

Jon*_*lms 5

计时器在您调用promiseFunction()时启动,因此当您调用时await a,所有三个计时器都已在运行。然后当a2 秒后完成时,其他的也已经完成。