0

есть код

const fetchData = {
  data: [],
  ft(){
    fetch('http://127.0.0.1:8000/api/v1/')
    .then(response => response.json())
    .then(data => this.data.push(data))
    .finally(() => {
      document.getElementById("myButton").style.backgroundColor = 'red';
      // return this.data
      // console.log(this.data)
    })
    .catch(error => console.log(error))
    console.log(this.data)
  },
  mapFt(){
    console.log(this.ft())  //.map(i => console.log(i))
  }
}

export default fetchData.ft()

который возвращает вот это введите сюда описание изображения

как мне забрать от туда data?

2 Answers2

0

Тут промисы юзать нужно, потому что сначала fetch(...) вызывается асинхронно, он не успевает записать данные.

Попробуй что-нибудь такое:

async ft() {
    new Promise((res, rej) => {
        fetch('http://127.0.0.1:8000/api/v1/')
            .then(response => response.json())
            .then(data => this.data.push(data))
            .finally(() => {
                document.getElementById("myButton").style.backgroundColor = 'red';
                res()
                // return this.data
                // console.log(this.data)
            })
        .catch(error => console.log(error))
    }).then(() => console.log(this.data))
},
teamspam
  • 147
  • 4
  • иди кури мануалы – htaccess May 09 '19 at 19:25
  • htaccess, так может тебе покурить, если такие вопросы задаешь. ещё и некорректные – teamspam May 09 '19 at 19:28
  • возможно, где он не корректен? – htaccess May 09 '19 at 19:31
  • htaccess, чекай – teamspam May 09 '19 at 19:35
  • иди кури)))) вернет он то что не может найти дата(2вараза) и так же undefined – htaccess May 09 '19 at 19:38
  • здесь беда в том что он возвращает, а не то как он возвращает, имхо – htaccess May 09 '19 at 19:40
  • ну, а щас чекай. ты если даже не тестишь, то лучше попей молока иди и не отвечай – teamspam May 09 '19 at 19:43
  • 1
    fetch(...) сам по себе возвращает промис. Нет необходимости его оборачивать. Просто ТС не указывает откуда он вызывает свою функцию. Потому и не получает развернутых ответов. –  May 09 '19 at 19:47
  • ну вот, ты и сам научился писать годный фетч – htaccess May 09 '19 at 19:47
  • кстати реально можно было в ресолв фетча добавить, но если включить мозги и поменять пару строк, можно юзать data где угодно – teamspam May 09 '19 at 19:49
  • 1
    const response = await fetch(); const data = await response.json() –  May 09 '19 at 19:50
  • 1
    Получился ответ из разряда вредные советы ) – Stepan Kasyanenko May 10 '19 at 07:11
  • это почему же ? – htaccess May 10 '19 at 07:57
0

short version

  async ft(){
    const response = await fetch('http://127.0.0.1:8000/api/v1/')
    const data = await response.json()
    .finally(()=>{
      document.getElementById("myButton").style.backgroundColor = 'green';
    })
    console.log(data.data)
    return data
  }

то что предложил Рустам