У меня проблемы с сохранением результата этой выборки в массиве:

const words = []
fetch("https://random-word-api.herokuapp.com/word?number=100")
  .then(response => response.text())
  .then(result => console.log(result))
  .then(function (data) {
    for (var i = 0; i < result.length; i++) {
      words.push(data.result[i])
      console.log(words)
    }
  })
  .catch(error => console.log('error', error));
let promise = fetch("https://random-word-api.herokuapp.com//word?number=10")
0
Peter Franklin 1 Сен 2020 в 22:38

2 ответа

Лучший ответ

Во-первых, вы хотите вместо этого вызвать response.json(), поскольку возвращаемые данные - это json
Данные находятся в параметре result, после чего вы можете перебирать этот массив, чтобы получить слова.

const words = []
fetch("https://random-word-api.herokuapp.com/word?number=100")
  .then(response => response.json())
  .then(function (result) {
    console.log('Result', result)
    for (var i = 0; i < result.length; i++) {
      words.push(result[i])
    }
    console.log('Words', words)
  })
  .catch(error => console.log('error', error));
0
Musa 1 Сен 2020 в 19:48

То, как вы планируете хранить массив слов, может быть проблематичным, потому что вы не можете контролировать, сколько времени займет выборка.
Обычно вы сохраняете результат обещания в переменной элемента управления, который после того, как обещание установлено:

const words = fetch("https://random-word-api.herokuapp.com/word?number=100")
  .then(response => response.json())


words
  .then(x => {
    console.log('the promise has settled', x)
  })
  .catch(console.error)
0
maioman 1 Сен 2020 в 19:59