Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

114
Vistas
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 Respuestas
Responde la pregunta

0

Intente agregar otro useEffect que dependa del estado de evQuestion .

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

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda