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

199
Views
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 answers
Answer question

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 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!