如何在while循环中添加延迟。JavaScript 函数下降() { isFalling=true; while(isFalling==true) { 如果(y

如何在while循环中添加延迟。JavaScript 函数下降() { isFalling=true; while(isFalling==true) { 如果(y,javascript,Javascript,我曾尝试在整个循环、if语句和y++中添加setTimeout(function()。我不知道我做错了什么。每当我添加这些函数时,一旦调用下降函数,页面就会失去响应。我很清楚这可能是一个重复的问题,但重复的问题没有帮助。 {},100)您可以这样做: function falling() { isFalling = true; while (isFalling == true) {

我曾尝试在整个循环、if语句和y++中添加setTimeout(function()。我不知道我做错了什么。每当我添加这些函数时,一旦调用下降函数,页面就会失去响应。我很清楚这可能是一个重复的问题,但重复的问题没有帮助。
{},100)

您可以这样做:

        function falling()
        {
            isFalling = true;

            while (isFalling == true)
            {

                if (y < 120) {

                    y++;

                }
                else if (y == 120) {
                    isFalling = false;

                }

            }

        }

我将使用window.setInterval()来代替,因为您希望它重复到某个数字

工作许可证:


如果调用falling()的目的是临时将全局变量的值设置为true(根据当前代码的建议),那么这应该可以实现

var isFalling=false;
功能下降(下降持续时间){
isFalling=true;
控制台日志(“正在下降”);
setTimeout(函数(){
isFalling=false;
控制台日志(“登陆”);
},下降持续时间| | 1000);
}

下降()是否有全局变量y?为什么首先需要延迟?因为没有提供足够的细节,所以不清楚你想要完成什么。虽然问题不是100%清楚,但似乎目的是管理一段时间,在这段时间里,下降是真实的。如果是这样,那么这个答案需要多一点代码。@JonSG,如果这是真的,那么这个问题确实需要将其指定为约束条件。无论如何,我知道需要向代码中添加什么来维护这种全局状态。
function falling(y) {
    if (y < 120) {
        setTimeout(falling.bind(this, y + 1), 100); // specify your delay.
    }
}

falling(0);
function falling(y) {
    isFalling = y < 120;
    if (isFalling) {
        setTimeout(falling.bind(this, y + 1), 100); // specify your delay.
    }
}
function falling()
    {
        var isFalling = true; 
        var y=0;
        myInterval = window.setInterval(function() {
          y++;
          console.log(y);
          if (y== 120) {
            clearInterval(myInterval);
          }
        }, 100)
    }

falling();