Проблемы, вызывающие Prompt Node.js Package несколько раз в каждом цикле цикла For Loop или While. - PullRequest
0 голосов
/ 01 ноября 2018

Я работаю над игрой с угадыванием слов узла и пытаюсь получить код, который предлагает пользователю вводить данные, пока у них не закончатся догадки или они не получат правильное слово. В данный момент у меня проблема с обратным вызовом подсказки. Из-за природы обратных вызовов мой код проходит через весь «подсказочный» код для каждого слова, прежде чем, наконец, дождаться ввода пользователя. Я попытался использовать цикл forEach и while изначально. Позже попытался настроить обещания, но я ничего не понял.

for(i = 0; i < wordsInPlay.length; i++){
    if(losses < 3){
        let solved = false;
        wordThisRound = new Word(wordsInPlay[i]);
        wordThisRound.setupWord();
        getGuess();
    }
}

Вот функция getGuess, реализующая пакет prompt nod.js:

function getGuess() {
wordThisRound.updateWordDisplay();
if (wrongsLeft > 0) {
    new Promise(function(resolve) {
        prompt.get(guessObject, function(err, result) {
            console.log('line 68');
            if(err) throw err;
            let userGuess;
            const letterGuessed = result.guess.toLowerCase();
            if (wordThisRound.wordObject.hasOwnProperty(letterGuessed) && wordThisRound.wordObject[letterGuessed].guessed === false) {
                userGuess = true;
                wordThisRound.wordObject[letterGuessed].guessed = true;
                wordThisRound.wordObject[letterGuessed].changeDisplay();
            }
            else {
                userGuess = false;
                wrongsLeft--;
            }
            resolve({gussedRight: userGuess, letter: letterGuessed});
        });
    }).then(function(promise){
        console.log('Inside .then function.');
        new Promise(function(resolve){
            gameFeedback(promise.gussedRight, promise.letter);
            resolve();
        });
    }).then(function(){
        getGuess();
    });
}
else console.log("You're our of wrong guesses...You lost this round.");
}
...