非法使用休息声明; JavaScript的

时间:2014-03-21 02:24:47

标签: javascript loops break

当这个变量变成一定数量时,我希望循环停止,但我不断收到错误,"未捕获的语法错误:非法的中断语句"。

function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        requestAnimFrame(loop);
        if (game==1) {

            break;

        }

    }
} 

3 个答案:

答案 0 :(得分:51)

break是打破一个循环,就像你在这里没有切换等,你需要使用return打破当前函数的执行流程并返回来电者。

function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        requestAnimFrame(loop);
        if (game == 1) {
           return
        }
    }
}

注意:这不包括if条件背后的逻辑或何时从方法返回,因为我们需要有关于drawAllEnemiesrequestAnimFrame方法的更多上下文以及如何{ {1}}值已更新

答案 1 :(得分:4)

您需要确保在游戏== 1时停止调用requestAnimFrame。中断语句仅退出传统循环(例如while())。

function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        if (game != 1) {
            requestAnimFrame(loop);
        }
    }
}

或者您也可以跳过第二个if条件并将第一个条件更改为if (isPlaying && game !== 1)。你必须创建一个名为game的变量,并给它一个值0.每场比赛都加1。

答案 2 :(得分:0)

我有一个next()函数,可能会激发您的灵感。

function queue(target) {
        var array = Array.prototype;

        var queueing = [];

        target.queue = queue;
        target.queued = queued;

        return target;

        function queued(action) {
            return function () {
                var self = this;
                var args = arguments;

                queue(function (next) {
                    action.apply(self, array.concat.apply(next, args));
                });
            };
        }

        function queue(action) {
            if (!action) {
                return;
            }

            queueing.push(action);

            if (queueing.length === 1) {
                next();
            }
        }

        function next() {
            queueing[0](function (err) {
                if (err) {
                    throw err;
                }

                queueing = queueing.slice(1);

                if (queueing.length) {
                    next();
                }
            });
        }
    }
相关问题