Как выйти из цикла while в зависимости от результата вызова Axios? - PullRequest
0 голосов
/ 07 ноября 2019

Чтобы убедиться, что введенное пользователем слово существует, мне нужно постоянно запрашивать слово (while loop) для слова, пока слово API не найдет слово.

Мой вопрос: как я могувыйти из цикла while в зависимости от результата вызова Axios?

Ниже приведен мой код.

const wordApiBaseUrl = 'https://www.dictionaryapi.com/api/v1/references/sd4/xml'
while (true) {
  const wordToGuess = prompt('Enter a word:').toLowerCase()
  const endPointUrl = `${wordApiBaseUrl}/${wordToGuess}?key=${wordApiKey}`
  this.axios.get(endPointUrl).then(res => {
    if (res.data.includes('def')) {
      break
    }
  })
}

1 Ответ

1 голос
/ 07 ноября 2019

Попробуйте:

const wordApiBaseUrl = 'https://www.dictionaryapi.com/api/v1/references/sd4/xml'

const vm = this; // <--- assuming this is the Vue instance
const dispatcher = {

    execute: function() {
        const wordToGuess = prompt('Enter a word:').toLowerCase()
        const endPointUrl = `${wordApiBaseUrl}/${wordToGuess}?key=${wordApiKey}`
        const dispatcher = this;
        vm.axios.get(endPointUrl).then(res => {

            if (!res.data.includes('def')) {
                dispatcher.execute();
            }
        })
    }
}
dispatcher.execute();

Вместо использования цикла while или async/await вы можете использовать рекурсию в нашем обещании. Если результат не удовлетворен, повторите вызов AJAX.

...