Telegram Group & Telegram Channel
Потоки записи в Node.js — практическое руководство

Node.js предоставляет мощную абстракцию ввода-вывода — Streams (потоки), которые позволяют эффективно обрабатывать данные частями, особенно когда речь идёт о больших объёмах данных. В этом руководстве мы сосредоточимся на Writable Streams — потоках, в которые можно записывать данные.

Что такое Writable Stream?

Writable Stream — это абстракция для источника данных, в который можно записывать. Примеры:

- fs.createWriteStream() — запись в файл
- http.request() — отправка HTTP-запросов
- net.Socket — запись в TCP-сокет
- process.stdout — вывод в консоль

Основные методы и события

Метод .write(chunk, [encoding], [callback])

Используется для записи данных в поток. Возвращает true, если поток готов принять ещё данные, иначе — false.


const fs = require('fs');
const stream = fs.createWriteStream('output.txt');

const result = stream.write('Hello, world!');
console.log(result); // true или false


Метод .end([chunk], [encoding], [callback])

Завершает поток. При необходимости можно передать финальный кусок данных.


stream.end('Final data');


События

- drain — вызывается, когда поток снова готов к записи (если ранее вернул false).
- finish — вызывается после завершения записи (после .end()).
- error — при возникновении ошибки.


stream.on('finish', () => console.log('Запись завершена.'));
stream.on('error', err => console.error('Ошибка:', err));


Управление потоком вручную

Когда stream.write() возвращает false, это означает, что внутренний буфер переполнен. Чтобы избежать перегрузки, стоит дождаться события drain:


function writeMany(stream, data, times) {
let i = 0;
function write() {
while (i < times) {
const ok = stream.write(data);
if (!ok) {
stream.once('drain', write);
return;
}
i++;
}
stream.end();
}
write();
}

writeMany(fs.createWriteStream('big.txt'), 'data\n', 10000);


Пользовательские Writable Streams

Вы можете создать свой Writable Stream, расширив Writable из модуля stream:


const { Writable } = require('stream');

class Logger extends Writable {
_write(chunk, encoding, callback) {
console.log(`LOG: ${chunk.toString()}`);
callback();
}
}

const logger = new Logger();
logger.write('Hello\n');
logger.end('Bye\n');


Итого

Writable Streams — ключевой инструмент в Node.js для эффективной записи данных. Они позволяют управлять потоком, обрабатывать ошибки и даже создавать свои реализации.

https://pavel-romanov.com/writable-streams-in-nodejs-a-practical-guide

✍️ @nodejs_lib



tg-me.com/nodejs_lib/345
Create:
Last Update:

Потоки записи в Node.js — практическое руководство

Node.js предоставляет мощную абстракцию ввода-вывода — Streams (потоки), которые позволяют эффективно обрабатывать данные частями, особенно когда речь идёт о больших объёмах данных. В этом руководстве мы сосредоточимся на Writable Streams — потоках, в которые можно записывать данные.

Что такое Writable Stream?

Writable Stream — это абстракция для источника данных, в который можно записывать. Примеры:

- fs.createWriteStream() — запись в файл
- http.request() — отправка HTTP-запросов
- net.Socket — запись в TCP-сокет
- process.stdout — вывод в консоль

Основные методы и события

Метод .write(chunk, [encoding], [callback])

Используется для записи данных в поток. Возвращает true, если поток готов принять ещё данные, иначе — false.


const fs = require('fs');
const stream = fs.createWriteStream('output.txt');

const result = stream.write('Hello, world!');
console.log(result); // true или false


Метод .end([chunk], [encoding], [callback])

Завершает поток. При необходимости можно передать финальный кусок данных.


stream.end('Final data');


События

- drain — вызывается, когда поток снова готов к записи (если ранее вернул false).
- finish — вызывается после завершения записи (после .end()).
- error — при возникновении ошибки.


stream.on('finish', () => console.log('Запись завершена.'));
stream.on('error', err => console.error('Ошибка:', err));


Управление потоком вручную

Когда stream.write() возвращает false, это означает, что внутренний буфер переполнен. Чтобы избежать перегрузки, стоит дождаться события drain:


function writeMany(stream, data, times) {
let i = 0;
function write() {
while (i < times) {
const ok = stream.write(data);
if (!ok) {
stream.once('drain', write);
return;
}
i++;
}
stream.end();
}
write();
}

writeMany(fs.createWriteStream('big.txt'), 'data\n', 10000);


Пользовательские Writable Streams

Вы можете создать свой Writable Stream, расширив Writable из модуля stream:


const { Writable } = require('stream');

class Logger extends Writable {
_write(chunk, encoding, callback) {
console.log(`LOG: ${chunk.toString()}`);
callback();
}
}

const logger = new Logger();
logger.write('Hello\n');
logger.end('Bye\n');


Итого

Writable Streams — ключевой инструмент в Node.js для эффективной записи данных. Они позволяют управлять потоком, обрабатывать ошибки и даже создавать свои реализации.

https://pavel-romanov.com/writable-streams-in-nodejs-a-practical-guide

✍️ @nodejs_lib

BY Node JS


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/nodejs_lib/345

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

In many cases, the content resembled that of the marketplaces found on the dark web, a group of hidden websites that are popular among hackers and accessed using specific anonymising software.“We have recently been witnessing a 100 per cent-plus rise in Telegram usage by cybercriminals,” said Tal Samra, cyber threat analyst at Cyberint.The rise in nefarious activity comes as users flocked to the encrypted chat app earlier this year after changes to the privacy policy of Facebook-owned rival WhatsApp prompted many to seek out alternatives.

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

telegram from us


Telegram Node JS
FROM USA