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

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

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