Fetch API не показывает данные json - PullRequest
0 голосов
/ 27 июня 2019

Я относительно новичок, чтобы реагировать на нативный и пытаюсь создать приложение, и я использую API fetch, чтобы попытаться получить файл json из API. Моя проблема заключается в том, что он, кажется, не имеет никакого ответа, когда я делаю вызовы API.

Вот функция, которая содержит вызовы извлечения

export const fetchData = url => {
    return async dispatch => {
        dispatch(fetchingRequest());
        try {
          let response = await fetch(url);
          let json = response.json();
          console.log(json);
          dispatch(fetchingSuccess(json));
        } catch (error) {
          dispatch(fetchingFailure(error));
        }
      };
    };

console.log(json) не появляется при регистрации в отладчике Chrome.

если для справки нужен URL, я использовал https://randomuser.me/api/.

Эта функция вызывается в одном из моих других компонентов. Я также использую redux и redux-thunk для хранения данных в файле JSON.

Отредактировано в:

Я считаю, что проблема в том, что функция не выполняется при вызове.

Я импортирую функцию и все redux действия, подобные этой

import {
  fetchingSuccess,
  fetchingRequest,
  fetchingFailure,
  fetchData
} from "../data/redux/actions/appActions.js";

Затем вызывается функция fetchData в функции _onPress, которая написана так:

_onPress = () => {
    let url = "https://randomuser.me/api/?results=10"
    fetchData(url);
    console.log("should have fetched");
};

в консоли ожидаемый вывод должен быть

JSON contents or error // logged when fetchData is called
should have fetched // logged from _onPress

но вместо консоли выводит

should have fetched // logged from _onPress

1 Ответ

1 голос
/ 27 июня 2019

Проблема в том, что response.json () возвращает обещание, поэтому, когда вы делаете:

let json = response.json();

Без ожидания тогда журнал после остается обещанием, чтобы это работало, вы должны добавить ожидание перед response.json ():

let json = await response.json();

Метод json () миксина Body принимает поток ответа и читает это до завершения. возвращает обещание , которое разрешается с результатом синтаксического анализа основного текста в формате JSON.

...