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

221
Views
¿El mejor enfoque para usar funciones asíncronas en una matriz de valores?

Tengo una pregunta sobre el mejor enfoque para llamar a funciones asíncronas en una matriz de valores, en JavaScript.

Tenga en cuenta que en mi entorno no puedo usar ningún método asíncrono/en espera, ni puedo usar promesas .

Por ejemplo, en mi caso, tengo esta función de encriptación SHA256:

 sha256(not_encrypted_string, function(encrypted_string) { // do stuff });

Quiero usar esta función para cifrar cada valor en una matriz de longitud desconocida:

 const strings_i_want_to_hash = ["string1", "string2", "string3", "string4", "string5", ...];

Entonces mi pregunta es, ¿cuál es la mejor manera de abordar el hash de todo esto? No puedo usar algo como

 const hashed_strings = strings_i_want_to_hash.map(sha256);

... porque es asíncrono. ¿Derecha?

La mejor manera que se me ocurre es crear una matriz vacía para colocar las cadenas codificadas y esperar a que sea tan larga como la matriz de entrada:

 const hashed_strings = []; strings_i_want_to_hash.forEach(function(str){ sha256(str, function(hashed_str) { hashed_strings.push(hashed_str); }); }); while (hashed_strings.length < strings_i_want_to_hash.length) { continue; }

... pero esto parece un enfoque realmente de mierda.

¿Conocen una mejor manera de manejar esto?

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

0

Si bien no he probado su código, sospecho que el ciclo while bloqueará el hilo y es posible que su programa nunca se complete.

Una opción es envolver su función asíncrona en otra que rastree el conteo. Algo como:

 function hashString(str, cb){ // Simulate async op setTimeout(() => cb('hashed-'+str), 500); } function hashManyStrings(strings, cb){ const res = []; strings.forEach(function(str){ hashString(str, function(hashed){ res.push(hashed); if(res.length === strings.length){ cb(res); } }) }) } hashManyStrings(['hi', 'hello','much', 'wow'], function(result){ console.log('done', result) })

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!