Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

241
Vistas
Nodo: cómo sincronizar en espera de lecturas de archivos de carpetas

Cómo leer archivos de forma asíncrona en el nodo js, aquí hay una función simple.

Hay muchas respuestas complicadas en Internet, ¿alguien está de acuerdo si esta es la más simple?

 export default async function handler(req, res) { let data = await readFiles('data/companies/'); res.status(200).json(data); } // async file reader function readFiles(dirname) { return new Promise(function (resolve, reject) { let data = {} fs.readdir(dirname, async function(err, filenames) { filenames.forEach(function(filename) { fs.readFile(dirname + filename, 'utf-8', function(err, content) { if (err) { reject(err) } data[filename] = content; if (filenames.length === Object.keys(data).length) { resolve(data) } }); }); }); }) }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Un poco más limpio y más fácil usando el soporte de promesa incorporado en fs.promises :

 const fs = require('fs'); const fsp = fs.promises; const path = require('path'); // async file reader async function readFiles(dirname) { const data = {}; const files = await fsp.readdir(dirname); for (const filename of files) { const full = path.join(dirname, filename); const content = await fsp.readFile(full, {encoding: 'utf8'}); data[filename] = content; } return data; }

O, si desea ejecutar sus operaciones de archivo en paralelo (al menos hasta el límite del grupo de subprocesos), puede obtener un rendimiento de extremo a extremo ligeramente más rápido como este:

 // async file reader async function readFiles(dirname) { const data = {}; const files = await fsp.readdir(dirname); await Promise.all(files.map(async filename => { const full = path.join(dirname, filename); const content = await fsp.readFile(full, {encoding: 'utf8'}); data[filename] = content; })); return data; }

También esto:

 res.status(200).json(data);

se puede reemplazar con:

 res.json(data);

200 ya es el estado predeterminado, por lo que no hay razón para especificarlo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda