@yura_born

Как дождаться выполнение асинхронной функции в useEffect?

Доброго времени всем! Столкнулся с такой проблемой:

у меня 3 useEffectдля получения данных и обновления стэйтов

useEffect(() => {
    async function fetchData() {
      console.log('fetchData_1');
      const user = await rsmobService.getUser(itemId);
      const userItem = user[0];

      if(userItem.otkritDostupUIT==='1'){
        setCheckedUitOtkrit(true);
      }      
      if(userItem.uchetkaBezIP==='1'){
        setCheckedUchetkaBezIp(true);
      }      
      if(userItem.arhive==='1'){
        setCheckedArhive(true);
      }
      setUser(userItem);
    }

    fetchData();
  }, []);


  useEffect(() => {
    async function fetchData() {
      console.log('fetchData_2');
      const divisions = await rsmobService.getAllDivisions();
      setDivisions(divisions);
    }

    divisions.map((division)=>{
      console.log(`${userItem.podrazd} = ${division.divisionName}`);
      if (userItem.podrazd === division.divisionName){
        setSelectedDivision(division.id);
      }
    });

    fetchData();
  }, []);



  useEffect(() => {
    async function fetchData() {
      console.log('fetchData_3');
      const sluzhbaData = await rsmobService.getAllSluzhba();
      setSluzhba(sluzhbaData); 

      // console.log(sluzhbaData);
    }

    sluzhbaData.map((sluzhba)=>{
      console.log(`${userItem.sluzhba} = ${sluzhba.sluzhbaName}`);
        if (userItem.sluzhba === sluzhba.sluzhbaName){
          setSelectedSluzhba(sluzhba.id);
        }
    });

    fetchData();
  }, []);


но после отработки всех useEffect у меня в setDivisions и setSluzhba приходят пустые массивы, я так понимаю не успевают отработать: const divisions = await rsmobService.getAllDivisions(); и const sluzhbaData = await rsmobService.getAllSluzhba();

Подскажите как дождаться получения данных или может я не правильно делаю. Помогите кто может. Спасибо!
  • Вопрос задан
  • 267 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы