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

233
Visualizações
Cómo llamar a una resolución de promesa original cuando está en función recursiva

He escrito la siguiente función lambda para obtener datos de una API y colocarlos en una base de datos. Esto funciona bien cuando la API solo devuelve una sola página, sin embargo, con> 1 página, parseData antes de que se ejecute resolve() , pero el registro de "Función finalizada" nunca se activa. ¿Este resolve() no resuelve la promesa que espero?

 exports.handler = async (event, context, callback) => { let db = await initDB(); // External function await api_get('users') console.log("Function finished"); db.end() callback(null) function api_get(type, page = 1, count = 0, results = []) { return new Promise(async function(resolve, reject) { let uri = `https://api.com/v1/${type}`; request.get(uri + '?page=' + page, async (error, response, body) => { const data = JSON.parse(body); results.push(data.users) current_count = count + data.meta.count if (current_count < data.meta.total) { await api_get(type, page + 1, current_count, results); } else { await parseData(type, results) resolve() } }); }); } function parseData(type, data) { return new Promise(async function(resolve, reject) { switch (type) { case 'users': let users = [].concat(...data) let sql = '' for (const user of users) { sql = sql + `INSERT INTO users (user_id) VALUES ('${user_id}');` } db.query(sql) .then( () => { resolve() }) break; } }); } };
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No está llamando a resolve() si se cumple esta condición:

 if (current_count < data.meta.total) { // If execution go in this block, you are never calling "resolve()" await api_get(type, page + 1, current_count, results); } else { await parseData(type, results) resolve() }
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