正确使用异步 JS 以确保函数调用等待先前的函数完成(解析?)

Proper use of async JS to ensure function calls wait for previous functions to complete (resolve?)

尝试学习正确的 async/await JavaScript 到 运行 序列函数,而序列中的早期函数将被延迟(使用 setTimeout 模拟)。我没有得到预期的结果(仍然得到“第一”、“第二”、“这应该 运行 第一?”- 见代码)。

我错过了什么?我对此有错误的想法吗?

提前致谢!

const zeroFunction = () => {
    setTimeout(() => {
        return new Promise((resolve) => {
            console.log("This should run first?");
            resolve();
        }); 
}, 2000)}

const firstFunction = () => {
    return new Promise((resolve) => {
        console.log("first");
        resolve();
    }) 
}

const secondFunction = () => {
    return new Promise((resolve) => {
        console.log("second");
        resolve();
    })
}

async function fnAsync() {
    await zeroFunction();
    await firstFunction();
    secondFunction();
}

fnAsync();

zeroFunction 当前正在隐式返回 undefined,而不是 Promise。反转 setTimeoutPromise 构造函数的包装,它应该按预期工作。

const zeroFunction = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log("This should run first?")
      resolve()
    }, 2000)
  })
}
const firstFunction = () => {
  return new Promise((resolve) => {
    console.log("first")
    resolve()
  })
}

const secondFunction = () => {
  return new Promise((resolve) => {
    console.log("second")
    resolve()
  })
}

async function fnAsync() {
  await zeroFunction()
  await firstFunction()
  secondFunction()
}

fnAsync()