N
Node JS
@nodejs_lib2.0K подп.
1.2Kпросмотров
60.8%от подписчиков
12 апреля 2025 г.
Score: 1.3K
Потоки записи в 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&#092;n', 10000); Пользовательские Writable Streams Вы можете создать свой Writable Stream, расширив Writable из модуля stream: const { Writable } = require('stream'); class Logger extends Writable { _write(chunk, encoding, callback) { console.log(LOG: &#036;{chunk.toString()}); callback(); } } const logger = new Logger(); logger.write('Hello&#092;n'); logger.end('Bye&#092;n'); Итого Writable Streams — ключевой инструмент в Node.js для эффективной записи данных. Они позволяют управлять потоком, обрабатывать ошибки и даже создавать свои реализации. https://pavel-romanov.com/writable-streams-in-nodejs-a-practical-guide ✍️ @nodejs_lib
1.2K
просмотров
2688
символов
Нет
эмодзи
Нет
медиа

Другие посты @nodejs_lib

Все посты канала →
Потоки записи в Node.js — практическое руководство Node.js п — @nodejs_lib | PostSniper