@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)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
29 нояб. 2024, в 07:44
20000 руб./за проект
29 нояб. 2024, в 04:45
5000 руб./за проект
29 нояб. 2024, в 04:42
5000 руб./за проект