Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

91
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda