illegal use of break statement; javascript

前端 未结 3 1294
忘了有多久
忘了有多久 2021-02-06 21:09

When this variable becomes a certain amount i want the loop to stop, but i keep getting the error, \"Uncaught SyntaxError: Illegal break statement\".

function lo         


        
相关标签:
3条回答
  • 2021-02-06 21:53

    I have a function next() which will maybe inspire you.

    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();
                    }
                });
            }
        }
    
    0 讨论(0)
  • 2021-02-06 21:57

    You need to make sure requestAnimFrame stops being called once game == 1. A break statement only exits a traditional loop (e.g. while()).

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

    Or alternatively you could simply skip the second if condition and change the first condition to if (isPlaying && game !== 1). You would have to make a variable called game and give it a value of 0. Add 1 to it every game.

    0 讨论(0)
  • 2021-02-06 22:03

    break is to break out of a loop like for, while, switch etc which you don't have here, you need to use return to break the execution flow of the current function and return to the caller.

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

    Note: This does not cover the logic behind the if condition or when to return from the method, for that we need to have more context regarding the drawAllEnemies and requestAnimFrame method as well as how game value is updated

    0 讨论(0)
提交回复
热议问题