write read nodejs node example create javascript node.js stream buffer stdin

read - stream javascript



¿Cuáles son las diferencias entre el evento legible y el evento de datos de la secuencia process.stdin? (1)

Son dos API diferentes que le permiten acceder a la misma secuencia de bloques de datos. La API ''readable'' se introdujo en el Nodo 0.10.0 como parte de "Streams 2", por lo que si lo busca, debería ayudar. El núcleo del problema es que la interfaz ''readable'' permite una administración y almacenamiento de datos mucho más simples.

El ejemplo de ''data'' llama a tu función con un trozo, y no tienes más remedio que manejarlo, o de lo contrario se perderá para siempre. En el ejemplo ''readable'' , la función le dice que los datos están disponibles, pero puede leerlos en cualquier momento. Esto permite que el sistema subyacente sepa si ya ha tratado con los datos o no, por lo que es muy sencillo admitir un concepto llamado contrapresión .

Por ejemplo, en un flujo de red, si un cliente está enviando datos a través de una conexión TCP a un servidor y el servidor está muy ocupado, recibirá eventos readable , pero podría optar por esperar para leer los datos hasta que realmente tenga los recursos. Para hacer frente a los datos. Al no leer los datos, el flujo los almacenará en búfer y, a medida que el búfer alcance un tamaño máximo, dejará de leer paquetes del sistema operativo para evitar el uso excesivo de RAM. Luego, el sistema operativo comenzará a eliminar paquetes y, dado que los paquetes se eliminaron, el cliente que envía los datos reducirá la velocidad a la que está enviando los datos para intentar que se eliminen menos paquetes.

Todo esto es técnicamente compatible con la implementación anterior "V1" de la secuencia, pero fue mucho más difícil de hacer.

Entonces, básicamente, si está esperando una tonelada de datos, es una buena idea usar ''legibles'' o diseñar sus flujos para que sean canalizados, pero si solo está leyendo bits de datos de un terminal, entonces es probable que vea una diferencia cero .

di que tengo

process.stdin.setEncoding(''utf8''); var myString = '''';

¿Cuáles son las diferencias entre

process.stdin.on(''readable'', function() { myString += process.stdin.read(); });

y

process.stdin.on(''data'', function(chunk) { myString += chunk; });

Me dan el mismo myString si la cadena de entrada es la misma una vez que finaliza la entrada estándar

¿Cuáles son las mejores prácticas para cada uno? Gracias