带异步SetTimeout函数的while循环

时间:2020-08-31 18:13:45

标签: javascript asynchronous while-loop settimeout

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

            }

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

您能帮我吗?

1 个答案:

答案 0 :(得分:0)

您在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")
        }
    
    })();

相关问题