控制台日志未在异步功能中的等待状态中打印

问题描述 投票:-1回答:2
function sleep(cb, ms) {
  return new Promise((cb) => setTimeout(cb, ms));
}

async function delayedGreeting() {
  console.log("Hello");
  await sleep(myfun, 1000);
  console.log("World!");
}

function myfun() {
  console.log("whatever");
}

delayedGreeting();
console.log("Goodbye!");

下面是Java代码执行的输出。有人可以在Eventloop,Callback Queue和Stack的上下文中解释这里发生了什么,因为我在输出中看不到“ whatever”一词。代码中是否有错误,如果是,那是什么?

Hello
Goodbye!
World!
async-await es6-promise
2个回答
0
投票

您应该尝试这样-

function sleep(cb, ms) {
    return new Promise((resolve) => resolve(setTimeout(cb, ms)));

  }

似乎您在promise中覆盖了cb值。


0
投票

您忘记在此行myfun上为await sleep(myfun, 1000);功能参数添加括号。

DEMO

  function sleep(cb, ms) {
    return new Promise((cb) => setTimeout(cb, ms));
  }

  async function delayedGreeting() {
    console.log("Hello");
    await sleep(myfun(), 1000);
    console.log("World!");
  }

  function myfun() {
    console.log("whatever");
  }

  delayedGreeting();
  console.log("Goodbye!");
© www.soinside.com 2019 - 2024. All rights reserved.