@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 асинх? Как мне быть, я уже просто не знаю, я был бы благодарен за пример/решение в моем случае. Уже около часа - полтора убил на это ...
  • Вопрос задан
  • 500 просмотров
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
11 июн. 2024, в 15:08
1000 руб./за проект
11 июн. 2024, в 14:54
1000 руб./за проект
11 июн. 2024, в 14:27
10000 руб./за проект