Узел JS не загружает страницу до завершения функции - PullRequest
0 голосов
/ 03 июля 2019

Я сделал тиктактое игру с минимаксным алгоритмом.Но когда в браузере работает функция минимаксного возврата, nodejs не будет отвечать до тех пор, пока функция не будет завершена

Я пытаюсь выполнить асинхронное ожидание, но не работает

minimax(board, currentTurn, depth, players) {
    var lastTurn = previousPlayer(players, currentTurn);
    var nextTurn = nextPlayer(players, currentTurn);
    //check win
    if (board.win(lastTurn)) {
      if (lastTurn == this.id) return { value: 20 + depth };
      return { value: -20 + depth };
    }
    if (!board.canPlay()) return { value: 0 }; //tie
    if (depth == 0) return { value: 0 }; //out of think

    var result = { value: 0, move: 0 };
    if (currentTurn == this.id) result.value = -1e8;
    else result.value = 1e8;

    for (var i = 0; i < board.size ** 2; i++) {
      if (board.cells[i].mark != "") continue;
      board.move(players[currentTurn], i);

      var temp = this.minimax(board, nextTurn, depth - 1, players);
      if (currentTurn == this.id) {
        if (temp.value > result.value) result = { value: temp.value, move: i };
        if (temp.value == result.value && Math.random() > 0.5)
          result = { value: temp.value, move: i };
      } else {
        if (temp.value < result.value) result = { value: temp.value, move: i };
        if (temp.value == result.value && Math.random() > 0.5)
          result = { value: temp.value, move: i };
      }
      board.unMove(i);
    }
    return result;
  }
...