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

209
Vistas
Función que devuelve 'indefinido', debido a la jerarquía de compilación. Reaccionar.js

Tengo un problema en el que llamo a una función que se supone que devolverá una lista, al mismo tiempo que asigno el valor de retorno de esa función a una variable, que no está definida. Sospecho que esto tiene que ver con el hecho de que estoy obteniendo datos de la base de datos en tiempo real (firebase), usando get, y tales funciones siempre se ejecutan después del hecho, lo que significa que mi función devuelve un valor antes de que se cree el valor en get función. No sé exactamente cómo solucionarlo, pero he tenido problemas similares en Swift, de ahí la sospecha de que la causa es la jerarquía de compilación.

Esta es la función:

 export default function createRoutes() { const db = getDatabase(app); const dbRef = ref(db); get(child(dbRef, `parties`)) .then((snapshot) => { const data = snapshot.val(); var paths = Object.keys(data); let completeArray = []; for (const path of paths) { completeArray.push({ type: "collapse", name: path, key: path, route: "/" + path, component: <SvgBeta />, }); } return completeArray; }) .catch((error) => { console.error(error); }); }

En mi archivo index.js, llamo a esta función y asigno el valor devuelto a una variable.

 var hello = createRoutes(); console.log(hello);

Esto registra 'indefinido' Si tuviera que registrar el valor devuelto (completeArray) dentro de la función, se registraría correctamente, lo he intentado.

¿Cómo resuelvo este problema, de modo que la variable hola sea igual al valor de completeArray, ya que mira hacia el final de la ejecución de la función?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

createRoutes no tiene declaración de devolución, por lo que implícitamente devuelve indefinido. Hay una declaración de devolución dentro de la devolución de llamada .then , pero todo lo que hace es controlar en qué se resuelve la promesa. Deberá devolver la promesa para que esté disponible para el mundo exterior:

 export default function createRoutes() { const db = getDatabase(app); const dbRef = ref(db); // Added "return" to the next line return get(child(dbRef, `parties`)) .then((snapshot) => { // ..etc } // used like: createRoutes().then(hello => { console.log(hello); });

Tenga en cuenta que devolverá una promesa que se resuelve en la matriz, no en la matriz en sí. No es posible devolver una matriz, porque esa matriz aún no existe (primero debe obtenerse de la base de datos).

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