Должен ли я использовать async / await или обещать в react-redux env? - PullRequest
0 голосов
/ 28 мая 2020

Я работаю над проектом с Express как бэкэнд и React как фронт. Я использую response-redux с redux-thunk в приложении React, и мне было интересно, какая разница (с точки зрения времени exe c, et c ..) между использованием функции async / await или обещания. Я знаю, что есть некоторые темы по этому поводу, но я не нашел хорошего ответа, почему я должен использовать один, а не другой. Из моего pov async / await, возможно, более читабельно, но это единственная причина выбрать этот подход? Есть ли существенная разница? Вот оба примера:

ПРИМЕР ASYNC / AWAIT:

export const fetchAllUsers = () => {
 return async dispatch => {
   try {
    fetchTokenFunc();
    dispatch({type: FETCH_START});
    const response = await axios.get('/users/list');
    if (response.data.result) {
      dispatch({type: FETCH_SUCCESS});
      dispatch({type: FETCH_ALL_USERS, payload: response.data.result});
    }  else {
        dispatch({type: FETCH_ERROR, payload: response.data.error});
     }
 } catch (error) {
   dispatch({type: FETCH_ERROR, payload: error.message});
 }
  return 'done';
  };
};

ПРИМЕР ОБЕЩАНИЯ:

export const fetchAllUsers = () => {
 return (dispatch) => {
  dispatch({type: FETCH_START});
   axiosTokenHeader();
   axios.get('/users/list').then(({data}) => {
   if (data.result) {
    dispatch({type: FETCH_SUCCESS});
    dispatch({type: FETCH_ALL_USERS, payload: data.result});
   } else {
     dispatch({type: FETCH_ERROR, payload: data.error});
   }
    }).catch((error) => {
      dispatch({type: FETCH_ERROR, payload: error.message});
  });
 };
};

1 Ответ

1 голос
/ 28 мая 2020

Единственное различие между вашими двумя примерами - это асинхронный синтаксис, который вы выбрали для кода express dispatch. dispatch не особо заботится о том, вызывается ли он в цепочке обещаний или в блоке async / await, поэтому вы даже можете использовать обратные вызовы, если действительно хотите. Удобочитаемость - прекрасная причина для выбора определенного синтаксиса. По этой причине вы можете использовать async и await.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...