Думаю, это сложно. Я запрашиваю у пользователя слово, которое я проверяю с помощью вызова API Axios
. Как только проверка очищена, основной цикл моей игры - палач - начинается с ожидания между каждым ходом (отсюда и использование await
).
Проблема: в текущей версии основной цикл игры (начинается после «как только проверка прошла, игра начинается ниже» комментарий) должна начинаться после проверки, когда на самом деле она начинается в одно и то же время, что все портит.
И я могуне помещать мой основной цикл в часть then()
моего вызова Axios
, потому что в этом случае вызов функции await-ed перестает работать.
Есть идеи, чтобы выйти из этого беспорядка?
async startGameComputerGuesser () {
var wordIsValidated = false
const vm = this
const dispatcher = {
execute: function () {
const wordApiBaseUrl = 'https://www.dictionaryapi.com/api/v1/references/sd4/xml'
wordToGuess = prompt('Enter a word:').toLowerCase()
const dispatcher = this
vm.axios.get(`${wordApiBaseUrl}/${wordToGuess}?key=${wordApiKey}`).then(res => {
if (!res.data.includes('def')) {
dispatcher.execute()
} else {
wordIsValidated = true
}
})
}
}
dispatcher.execute()
// once validation clears, game starts below
if (wordIsValidated) {
while (!this.$store.state.gameIsOver) {
await this.resolveAfter2Seconds()
// main loop of the game goes here
}
}
}