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

98
Views
¿Es seguro actualizar el contador desde dentro de una de las promesas de Promise.all en Node.js?

Node.js usa subprocesos del grupo de trabajadores para realizar operaciones de E/S. Si necesito contar la cantidad de caracteres en muchos archivos al mismo tiempo (usando Promise.all ), ¿es seguro actualizar la variable totalNumberOfChars que es común a todas las operaciones de lectura de archivos prometidos? Debido a que se puede usar un subproceso separado para cada operación de lectura, ¿ totalNumberOfChars puede ser incorrecto?

Este es el código:

 const fs = require("fs"); const util = require("util"); const readFileAsync = util.promisify(fs.readFile); /** * * @param {Array} pathsToFiles - array of paths to files */ const main = async (pathsToFiles) => { let totalNumberOfChars = 0; await Promise.all( pathsToFiles.map(async (path) => { const chars = await readFileAsync(path); totalNumberOfChars += chars.length; }) ); console.log("totalNumberOfChars", totalNumberOfChars); }; main(['/home/a.txt', '/home/b.txt'])
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto es seguro, porque lo que hay dentro de esta función:

 pathsToFiles.map(async (path) => { const chars = await readFileAsync(path); totalNumberOfChars += chars.length; })

se ejecuta sincrónicamente, lo que significa que su archivo se lee sincrónicamente (¡nuevamente, dentro de esa devolución de llamada!) Y también está agregando al contador sincrónicamente. Entonces, después de la ejecución de la función "principal", recibirá la respuesta correcta.

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!