问题描述
我有问题。我的代码不起作用。它不会在console.log中显示最后一条消息(“结束”)。我使用setTimeOut承诺每3000毫秒执行一次操作。这是我的诺言函数setTimeOut
function delay(message){
return new Promise(() => setTimeout(function(){console.log(message)},3000))
}
async () => {
while (true){
console.log("Start")
await delay("No")
console.log("End")
}
}
我使我的代码更容易(没有我必须调用的所有条件和函数),因为我认为我对诺言的理解有些遗漏。我在做什么错了?
您能帮我吗?
解决方法
您在delay
/ timeout
函数中的承诺永远无法解决。
这是它的工作方式。请注意promise回调的resolve
参数。
function delay(message){
return new Promise((resolve) => setTimeout(function(){
console.log(message);
resolve();
},3000))
}
(async () => {
while (true){
console.log("Start")
await delay("No")
console.log("End")
}
})();