您忘记在myfun
这行上为await sleep(myfun,1000);
函数参数添加括号。
演示
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!");
,
代码中有一些小错误。我在下面指着他们。
- 您应该在Promise中写出决心。
return new Promise((resolve) => resolve (setTimeout(()=>{cb()},ms)));
- 如果希望
myfun
在1000毫秒的超时后运行,则必须在settimeout first参数中调用该函数。像这样
setTimeout(()=>{cb()},ms);
这是更新的源代码,
function sleep(cb,ms) {
return new Promise((resolve) => resolve (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!");
根据您尝试的代码的实现,正确的输出应该是这样的,
Hello
Goodbye!
World!
whatever
,
您应该尝试这样-
function sleep(cb,ms) {
return new Promise((resolve) => resolve(setTimeout(cb,ms)));
}
似乎您正在覆盖promise中的cb值。
本文链接:https://www.f2er.com/2653986.html