Неожиданный результат действия redux

#javascript #redux

#javascript #redux

Вопрос:

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

Действие, отправленное в компоненте:

 export function getCategory() {
  const request = axios({
    method: "get",
    url: url,
  }).then(response => {
    return {
      data: response.data.results,
    };
  })
  console.log(1, request)
  return {
    type: types.GET_CATEGORY,
    payload: request,
  };
}
 

и редуктор:

 export default function(state = initialState, action) {
  switch (action.type) {
    case GET_CATEGORY:
      console.log(2, action.payload)
      return {
        ...state,
        category: action.payload.data
      };
    ...
 

Я ожидал, что у меня будет неразрешенное обещание в обоих console.log 1 и 2.
На самом деле console.log 1 печатает разрешенное обещание, а console.log 2 печатает данные, полученные с сервера.

Redux работает синхронно, и в функции getCategory нет ключевых слов async / await. Почему reducer получает правильные данные, а не неразрешенное обещание?

Подробности о приложении: react-native, redux только с промежуточным программным обеспечением thunk.
(пожалуйста, не давайте мне советов о thunks, сагах и т. Д. Это не мой код)

Редактировать

Проблема решена, другой программист добавил промежуточное программное обеспечение redux-promise, и я не был добавлен в обзор…

Комментарии:

1. Должно быть что-то еще. Вы уверены в части «только промежуточного программного обеспечения»?

2. Задача Thunk — обрабатывать async - await . Thunk останавливает отправку действия до тех пор, пока не будет выполнено обещание, а затем отправляет действие с разрешенной полезной нагрузкой в редуктор.

3. Боже @YuryTarabanko кто-то добавил промежуточное программное обеспечение redux-promise. Я этого не видел. Решаемая…