3

在 JavaScript 中,我如何向 JavaScript 循环添加延迟在下面的代码中

snakeclass.prototype.start = function() {
    while(1){
        if(this.collision()){
            console.log("game over");
            break;
        }

        this.movesnake();

        // delay here by 300 miliseconds
    }
};

我如何在这里使用设置超时功能;

4

1 回答 1

5

那是行不通的。如果你这样做,你的浏览器就会死机:

while (1) {}

但是,您可以使用 setInterval。

snakeclass.prototype.start = function() {
    var interval;
    var doo = function () {
        if(this.collision()){
            console.log("game over");
            clearInterval(interval);
        }
        this.movesnake();
    }.bind(this); // bind this so it can be accessed again inside the function
    doo();
    timeout = setInterval(doo, 300);
};
于 2013-07-14T22:10:35.743 回答