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!
您应该尝试这样-
function sleep(cb, ms) {
return new Promise((resolve) => resolve(setTimeout(cb, ms)));
}
似乎您在promise中覆盖了cb值。
您忘记在此行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!");