Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

204
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda