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

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

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