@Narts

Как можно оптимизировать этот кусок кода?

привет!
есть такой код:
export const getBlog = (spinner = null) => (dispatch) => {
  dispatch(setSpinner(spinner));
  axiosGetBlog()
    .then((response) => {
      dispatch(setPosts(response.result, 1));
    })
    .catch(console.log)
    .finally(() => {
      dispatch(closeSpinner());
    });
};

export const getPubl = (spinner = null) => (dispatch) => {
  dispatch(setSpinner(spinner));
  axiosGetPubl()
    .then((response) => {
      dispatch(setPosts(response.result, 2));
    })
    .catch(console.log)
    .finally(() => {
      dispatch(closeSpinner());
    });
};

export const getMat = (spinner = null) => (dispatch) => {
  dispatch(setSpinner(spinner));
  axiosGetMat()
    .then((response) => {
      dispatch(setPosts(response.result, 3));
    })
    .catch(console.log)
    .finally(() => {
      dispatch(closeSpinner());
    });
};


то есть по сути код дублируется 3 раза, единственное отличие - в промисе. Можно как-нибудь схлопнуть этот код в одну функцию? Например, в аргументах функции помимо spinner будет mode, в зависимости от которого будет вызываться тот или иной промис (axiosGetMat/getPubl/getBlog)
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
black1277
@black1277
Вольный стрелок
export const getData = (axiosFunc, num, spinner = null) => (dispatch) => {
  dispatch(setSpinner(spinner));
  axiosFunc()
    .then((response) => {
      dispatch(setPosts(response.result, num));
    })
    .catch(console.log)
    .finally(() => {
      dispatch(closeSpinner());
    });
};
// примеры вызова
getData (axiosGetBlog, 1, spinner)
getData (axiosGetPubl, 2, spinner)
getData (axiosGetMat, 3, spinner)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 22:22
10000 руб./за проект
03 мая 2024, в 22:18
1000 руб./за проект
03 мая 2024, в 21:57
1000 руб./за проект