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

88
Vistas
Función de espera JS con Promesa vacía

Tengo una pregunta, entiendo un poco cómo funcionan las promesas, pero me gustaría esperar a que finalice una función, incluso si no devuelve nada. Tengo un código similar pero no espera a que b termine antes de comenzar los pasos adicionales en a.

Por ejemplo, en este caso, quiero crear tablas en una base de datos sqlite, luego cargar datos y ejecutar algunas pruebas. Lo que pasa aquí es que está comenzando a ejecutar las pruebas antes de terminar de cargar los datos y las matrices creadas en el método loadData están vacías. Incluso preferiría no devolver esas matrices, sino esperar siempre a que se complete este proceso antes de ejecutar las pruebas.

 async function initialize(){ try{ console.log("Beginning connection"); db = await connectToDB(); console.log(`Database: ${db}`) db.serialize(function() { console.log("Creating tables") db.run(queries.__parent_company); db.run(queries.parent_company); db.run(queries.__sales_rep); db.run(queries.sales_rep); db.run(queries.advertiser); console.log("Tables created"); }); let response = await loadData(); console.log("Response", response) testData(); } catch(e){ throw e; } } function loadData() { return new Promise(async (resolve, reject) => { console.log("Beggning data insertion"); try{ let insertedAdvertisers = []; let insertedSales = []; let insertedCOmpanies = []; data.rows.forEach(async row => { let advertiser = await loadAdvertisers(row); let sale = await loadSalesRep(row); let company = await loadParentCompany(row); insertedAdvertisers.push(advertiser); insertedSales.push(sale); insertedCOmpanies.push(company); console.log("HERE", insertedAdvertisers, insertedSales, insertedCOmpanies) }) resolve({insertedAdvertisers, insertedSales, insertedCOmpanies}); } catch(e){ console.log(e); reject(e); } }); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En cuanto a Promises, le aconsejo que lea sobre el bucle de eventos y cómo funciona.

Lo que sucede en su código es que JS sabe que se trata de una promesa, por lo que lo moverá a la cola de devolución de llamada hasta que finalice y continúe ejecutando su código y luego lo empuje a la pila para que se ejecute. por lo tanto, si desea ejecutar una determinada lógica después de que finalice una función asíncrona, debe proporcionarla como una devolución de llamada o usar .then()

 async function a() { b().then(()=>{ // your code that you want to be executed after a finishes }) }

Esta imagen podría ilustrar lo que estoy tratando de explicar.

ingrese la descripción de la imagen aquí

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