Javascript 带有异步SetTimeout函数的while循环

Javascript 带有异步SetTimeout函数的while循环,javascript,asynchronous,while-loop,settimeout,Javascript,Asynchronous,While Loop,Settimeout,我有个问题。我的代码不起作用。它不会在console.log中显示最后一条消息(“结束”)。我使用setTimeOut承诺每3000毫秒做一件事。这是我的承诺函数setTimeOut function delay(message){ return new Promise(() => setTimeout(function(){console.log(message)}, 3000)) } 我在代码的异步函数中使用的: async () => { whil

我有个问题。我的代码不起作用。它不会在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")
              }

            }
我使我的代码更容易(没有所有必须调用的条件和函数),因为我认为我在理解承诺时遗漏了一些东西。我做错了什么


您能帮我一下吗?

您在
延迟
/
超时
功能中的承诺永远无法解决

下面是它的工作原理。注意promise回调的
resolve
参数

功能延迟(消息){
返回新承诺((解析)=>setTimeout(函数(){
控制台日志(消息);
解决();
}, 3000))
}
(异步()=>{
while(true){
console.log(“开始”)
等待延迟(“否”)
控制台日志(“结束”)
}

})();超时的定义在哪里
以及在哪里使用了延迟?您忘了在
延迟中解决承诺问题。这是否回答了您的问题?抱歉,我更改了函数的名称以发布它,但是超时和延迟是相同的函数好的,我知道了,谢谢你的帮助。我误用了承诺,现在我开始明白它是如何运作的。