@jondoeonoe

Как правильно сделать fetch в моем случае (Promise pending)?

Добрый вечер.
Есть массив, с помощью map я отрисовываю каждый элемент массива.
Есть вопрос по одному моменту связанный с фетчем.

<img src={this.getPromoUrl(tweet.id, "image")} />

Тут я использую функцию

getPromoUrl = (id, param) => {
    const fetchData = this.getPromise(id, param);

    console.log(fetchData);

    return fetchData;
  };

  getPromise = async (id, param) => {
    let data;

    try {
      const response = await fetch(`https://someurl/api/v1/statuses/${id}/card?access_token=${process.env.REACT_APP_KEY}`);
      const json = await response.json();

      data = json[param];
    } catch (e) {
      console.log(e);
    }

    return data;
  };


Но, как и ожидаемое, получаю Promise pending при return fetchData

// В консоле все ок, строка
    console.log(fetchData);


У меня вопрос, как мне сделать так, чтобы я адекватно получил строку из fetchData, я не совсем понимаю просто. Это из-за того, что ф-я getPromise асинх? Как мне быть, я уже просто не знаю, я был бы благодарен за пример/решение в моем случае. Уже около часа - полтора убил на это ...
  • Вопрос задан
  • 501 просмотр
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
getPromoUrl = async (id, param) => {
  const data = await this.getPromise(id, param);
  console.log(data);   
  this.setState({ data });
};

или:
getPromoUrl = (id, param) => {
  this.getPromise(id, param).then(data => {
    console.log(data);   
    this.setState({ data });
  });
};

Хорошо изучите API Promise.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы