Yield call возвращает обещание

Итак, я пытаюсь изучить React-Redux-Saga. Я создаю простое приложение, которое просто берет пользовательские данные из API и отображает их. Вот моя функция генератора в моей саге:

export function* fetchImage() {
      try {
        const response = yield call(fetch, 'https://randomuser.me/api/');
        console.info("Response 111", response);
        const responseBody = response.json();
        yield put(setImage(response));
      } catch (e) {
        yield put(fetchFailed(e));
      }
      return;

    }

Он просто выполняет вызов yield для URL-адреса, а затем отправляет действие. Однако объект ответа не возвращается как JSON, вместо этого похоже, что он возвращает какой-то объект ответа:

Yield call возвращает обещание

Я не знаю, что мне делать с этим предметом. Если вы нажмете URL-адрес напрямую через браузер, он вернет объект JSON. Как мне заставить его вернуть JSON?

Итак, мой response.json () возвращает этот объект:

Yield call возвращает обещание

Похоже, мой объект, который я хочу, находится в вещи [[PromiseValue]]. Что это такое и как мне получить свою ценность?

Используемая вами библиотека с этими call и put помещает ваш ответ в объект Response. Вы знаете библиотеку? Если да, то проверьте его документацию, вероятно, это будет так же просто, как получить доступ к этому JSON.

codisfy 24.08.2018 03:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
7 963
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы всегда можете получить доступ к телу объекта ответа после его разрешения:

const response = yield call(fetch, 'https://randomuser.me/api/'); const responseBody = yield response.json(); // HERE is what you want

Я сделал это, но он вернул вещь [[PromiseValue]], и мой объект там. Как мне получить оттуда свою ценность? Я отредактировал свой вопрос.

MatTaNg 24.08.2018 03:27

вы звонили response.json с yield?

Thai Duong Tran 24.08.2018 04:09

Как это ?: yield call (fetch, response.json ()); Это дало мне то же самое, что и раньше.

MatTaNg 24.08.2018 05:30
yield response.json();
Thai Duong Tran 24.08.2018 09:33

Еще один способ проделать ту же работу, используя метод call.

const response = yield call(fetch, 'https://randomuser.me/api/');
const body = yield call([response, 'json']);
console.info(body)

Другой путь

const body =  yield call([response, response.json]);

Другие вопросы по теме