Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

115
Views
Cómo esperar datos asíncronos para iniciar la función de sincronización

Obtengo algunos datos de una llamada api y los configuro en un estado. Luego uso esta variable de estado en otra función para filtrar algunos datos. Cuando el usuario abre la interfaz por primera vez, los datos no se muestran porque la función de sincronización obtiene los datos vacíos del estado.

Aquí está el código:

 const [evQuestion, setEvQuestion] = useState(); const [answers, setAnswers] = useState(); const getEvaluationsQuestionsByOrganizations = async (evalId) => { const response = await apiStandarts.get(`/evaluation-questions?organization_evaluation=${evalId}`); setEvQuestion(response.data); }; const evAnswers = () => { const evAnswers = questions.map(q => { return evQuestion?.map(ev => { return q.question_options.find(i => i.id === ev.questOptionId) }); }); const filterAnswers = evAnswers.map(q => { return q?.filter(Boolean) }) const answersToObject = filterAnswers.map(item => { return convertArrayToObject(item) }); const arr = {...answersToObject} const obj2 = Object.fromEntries( Object.entries(arr).map(([key, value]) => [key, value]) ) const obj3= Object.values(obj2).map(item => { return {[item.question]: {...item}} }) const savedAnswers = convertArrayToObject(obj3); console.log(savedAnswers) setAnswers(savedAnswers) } useEffect(() => { getEvaluationsQuestionsByOrganizations(); evAnswers(); }, [])

Intenté envolver la función evAnswers en una función settimeout pero no tuve suerte. ¿Cómo puedo lograr esto, alguna idea?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Intente agregar otro useEffect que dependa del estado de evQuestion .

 useEffect(() => { getEvaluationsQuestionsByOrganizations(); }, []); useEffect(() => { evAnswers(); }, [evQuestion]);
about 4 years ago · Juan Pablo Isaza Report

0

la función getEvaluationsQuestionsByOrganizations(..) se define como una función asíncrona , pero la estás usando de forma síncrona , en ese caso deberías llamar a tus códigos de la siguiente manera:

 useEffect(() => { const fetchedDataAPI = async () => { return await getEvaluationsQuestionsByOrganizations(); }; fetchedDataAPI .then(res => { evAnswers();}) .catch(err => {..}); ; }, []);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!