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

170
Views
¿Cómo usar la biblioteca async.js con una espera?

Estoy tratando de implementar la biblioteca async para que sondee una API para una transacción hasta que una de ellas tenga éxito.

 router.get('/', async function (req, res) { let apiMethod = await service.getTransactionResult(txHash).execute(); async.retry({times: 60, interval: 1000}, apiMethod, function(err, result) { if(err){ console.log(err); }else{ return result; } }); }); module.exports = router;

Sin embargo, no puedo descifrar la sintaxis correcta con la función de await de apiMethod .

Recibo el error Error: Error: Invalid arguments for async.retry

¿Cómo lo implemento para que todos los errores se registren cada vez que falla y también cómo salir con éxito del ciclo de 60 reintentos si tiene éxito antes de que finalicen los 60? (si termina en, por ejemplo, 14, detenga los reintentos).

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Puede probar la biblioteca de reintento asíncrono .

 await retry( async (bail) => { const res = await service.getTransactionResult(txHash).execute(); if (res.status >= 400) { bail(new Error()); return; } const data = await res.text(); return data; }, { retries: 60, } );
about 4 years ago · Juan Pablo Isaza Report

0

Como puedo ver, se supone que apiMethod es una promesa no resuelta, prueba esto

 router.get('/', async function (req, res) { let apiMethod = () => (service.getTransactionResult(txHash).execute()) async.retry({times: 60, interval: 1000}, apiMethod, function(err, result) { if(err){ console.log(err); }else{ return result; } }); }); module.exports = router;
about 4 years ago · Juan Pablo Isaza Report

0

var promises = []; let request = service.getTransactionResult(txHash); for(let i = 0; i < 60; i++){ promises.push(request); } for(let i = 0; i < 60; i++){ try{ let result = await promises[i].execute(); }catch(err){ console.log(err); await new Promise(resolve => setTimeout(resolve, 1000)); } }

No pude averiguar cómo hacerlo con la biblioteca asíncrona, pero esto funcionó para sondear en mi situación en la que se arrojaría el error y esperaría un segundo cuando la transacción aún no se haya procesado y luego se vuelva a intentar.

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!