Отключение кнопки до завершения функции - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть две кнопки, и я хочу отключить «mazeButton», пока не завершится функция mazeGeneratorAndSolver.game.solve ().Ниже приведена одна из моих попыток сделать это.Я также пытался использовать глобальную переменную, которая сохранялась, если лабиринт находится в процессе решения, но я также не мог заставить это работать.

$(document).ready(function () {
    $("#mazeButton").click(function () {
        // Create the randomised maze.
        mazeGeneratorAndSolver.maze = new Maze();
        // Display the maze.
        new mazeGeneratorAndSolver.DisplayMaze();
    });

$("#solveButton").click(function () {
        // Disable maze button until maze has been solved.
        document.getElementById("mazeButton").disabled = true;

        mazeGeneratorAndSolver.game.solve();
        document.getElementById("solveButton").disabled = true;
        // Re-enable maze button.
        document.getElementById("mazeButton").disabled = false;  
    });
});

Функция mazeGeneratorAndSolver.game.solve () выполняетКоличество вещей, но в конце он вызывает следующую функцию:

function displaySolution(length) {
        function myLoop () {
            // Draw maze with timeout.
            // Timeout inversely proportional to length of path
            setTimeout(function () {
                // Update game position to next cell in path.
                game.position = game.position.nextCell;
                mazeGeneratorAndSolver.currDiv = document.querySelector('[data-x="' + game.position.x + '"][data-y="' + game.position.y + '"]');
                mazeGeneratorAndSolver.currDiv.className += ' path';
                if (!(game.position === game.endPosition)) {
                    myLoop();
                }
            }, 1000 / length)
        }
        myLoop();
    }

Как отключить «mazeButton», пока анимация для «myLoop» не будет полностью закончена?

Это нетот же вопрос.Речь идет об отключении кнопки до тех пор, пока не будет сгенерирован html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...