Ничто не выполняется после forEach l oop в приставке - PullRequest
0 голосов
/ 14 февраля 2020

Мой избыточный код выглядит следующим образом

const getCategories =  (res) => (dispatch,getState) => {
  let categories = []
  const result = res.results
  console.log("here")
  result.forEach((rawMaterial,index)=>{
     if(!_.includes(categories,rawMaterial.category[0].name)){

       categories.push(rawMaterial.category[0].name)
       dispatch({type:UPDATE_CATEGORIES,categories})
     }
  });
  console.log("here2")
} 

По сути, это функция, которая помещает данные в массив категорий из входного параметра "res". Моя проблема в том, что функция getCategories не выполняет ничего после forEach l oop. Приведенный ниже фрагмент не выполняется в указанном выше коде.

console.log("here2")

Функция ничего не выполняет после forEach l oop.

Полный код

export const getRawMaterials = (params = {}) => (
  dispatch,
  getState,
  { fetch }
) => {

  dispatch({ type: GET_RAW_MATERIALS_REQUEST, params });
  const { token } = dispatch(getToken());
  const { search, ordering } = getState().rawMaterials;
  return fetch(
    `/pands/raw-materials/?${qs.stringify({
      search,
      ordering
    })}`,
    {
      method: "GET",
      token,
      success: res => {
        const rawMaterials = res.results
        dispatch({ type: GET_RAW_MATERIALS_SUCCESS, res });

        const categories = getCategories(rawMaterials);

        dispatch({type:UPDATE_CATEGORIES,categories})
      },
      failure: err => dispatch({ type: GET_RAW_MATERIALS_FAILURE })
    }
  );
};

//doubt here, function get return after forEach
const getCategories = (res) => {
  let categories = []
  const result = res;
  return result.map(rawMaterial => {
    if(_.includes(categories,rawMaterial.category[0].name)) return null;
    return rawMaterial.category[0].name;
    }
  )
} 

Мой код не работает из следующей строки:

const categories = getCategories(rawMaterials);

Также не выдает ошибку. Я думаю, что проблема заключается в ответе от бэкэнда.

"res" идет от бэкэнда. мои данные в "res.results". Когда я печатаю check "res.results", он показывает объект, но когда я его печатаю, он показывает массив объектов.

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