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

89
Views
¿Cuándo comienza este emisor de eventos?

Escribí un código que funciona tal como lo quiero en Node v14.15.1 , pero no entiendo completamente cómo funciona. Aquí está:

 const rows = await new Promise(resolve => { const result = []; const file = fs.createReadStream('src/tests/readability/input.csv'); const reader = file.pipe(csv()); reader.on('data', row => { result.push(row); }); reader.on('end', () => { resolve(result); }); });

Mi pregunta es, ¿cuándo comienza el emisor de eventos a activar eventos y llamar a las funciones de devolución de llamada? Porque en ningún momento llamo a ningún tipo de función start() . Asigno funciones de devolución de llamada usando reader.on() , y luego se lee el archivo CSV. Por ejemplo, ¿cómo es que no comienza a leer el archivo antes de que tenga la oportunidad de asignar las devoluciones de llamada, por lo que me hace perder el inicio de los eventos o incluso todos los eventos?

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

0

La transmisión comenzará a emitir datos cuando adjunte el controlador data

https://nodejs.org/api/stream.html#stream_event_data

Adjuntar un detector de eventos de 'datos' a una transmisión que no se ha pausado explícitamente cambiará la transmisión al modo de flujo. Los datos se pasarán tan pronto como estén disponibles.

https://areknawo.com/node-js-file-streams-explained/

Modo fluido

El "modo de flujo" es definitivamente un poco más complejo en su naturaleza. Aquí, el método .read() se llama automáticamente, dejándolo solo con el consumo de datos dados dentro del evento "datos", emitido justo después de la llamada .read(), con un fragmento de datos nuevo.

 // ... readable.on("data", dataChunk => { // code });

Además, el "modo de flujo" tiene una protección incorporada que evita que los datos se lean automáticamente, si no hay un controlador adecuado disponible. Entonces, solo cuando agregue su controlador de eventos de "datos", los datos comenzarán a fluir. Como se mencionó anteriormente, esto también hace que se produzca un cambio del modo "en pausa" al modo "flujo". ¡Sin embargo, aún debes ser cauteloso! ¡Llamar al método .resume() sin el controlador de eventos de "datos" o eliminar el controlador no detendrá el proceso de lectura y provocará la pérdida de datos!

about 4 years ago · Juan Pablo Isaza Report

0

Para comprender cuándo se activa el emisor de eventos, primero debe comprender cómo funciona el bucle de eventos en Javascript , que se explica en el video.

Básicamente, cuando se ejecuta el código, cuando encuentra

const archivo = fs.createReadStream('src/tests/readability/input.csv');

Se pasa en la API web, incluso si los datos están disponibles en ese momento, solo ingresarán al bucle de eventos como una nueva entrada, por lo que debe esperar hasta que se ejecute toda la entrada anterior. Cuando se ejecuta la entrada, ya tendrá la función de devolución de llamada adjunta a la entrada respectiva.

lector.on('datos', fila => {resultado.push(fila);}); lector.on('fin', ()=> {resolver(resultado);});

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!