首页 > 解决方案 > 在 For 循环或 While 循环的每个循环中多次调用提示 Node.js 包的问题

问题描述

我正在开发一个节点单词猜谜游戏,我正在尝试编写提示用户输入的代码,直到他们猜不出来或猜对了单词。现在我在使用提示的回调时遇到问题。由于回调的性质,我的代码在最终等待用户输入之前遍历每个单词的所有“提示”代码。我最初尝试过使用 forEach 和 while 循环。后来尝试设置承诺,但我还没有弄清楚任何事情。

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

下面是实现提示 nod.js 包的 getGuess 函数:

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.");
}

标签: javascriptnode.jsloopscallbackprompt

解决方案


推荐阅读