Поток в Node.js — это концептуальная структура для работы с непрерывным потоком данных. Это означает, что вы можете потреблять данные по мере их загрузки или производства, фрагмент за фрагментом (или по частям), вместо того, чтобы загружать все в память перед началом обработки. Потоки могут быть читаемыми, записываемыми или и теми, и другими.
Содержание
Типы потоков
- Читаемый поток: из которого можно читать данные.
- Записываемый поток: в который можно записывать данные.
- Дуплексный поток: который является и читаемым, и записываемым.
- Трансформирующий поток: который является дуплексным и может модифицировать или преобразовывать данные во время записи и чтения.
Потоки присутствуют во многих модулях Node.js, например, http.request(), zlib.createGzip(), fs.createReadStream(), и process.stdout. Все они возвращают потоки.
Метод pipe
Метод pipe позволяет соединить вывод читаемого потока с вводом записываемого потока:
const fs = require('fs'); const readableStream = fs.createReadStream('input.txt'); const writableStream = fs.createWriteStream('output.txt'); readableStream.pipe(writableStream);
В этом примере мы создаем объекты потоков для чтения и записи файлов, а затем передаем данные из читаемого потока в записываемый с помощью метода pipe(). По мере поступления данных в читаемый поток они автоматически передаются в записываемый поток без необходимости явно обрабатывать каждый кусок данных.
Этот метод перенаправляет, или, как часто говорят, “пайпит” данные из читаемого потока в записываемый, следя за тем, чтобы его внутреннее хранилище не переполнялось. Таким образом, pipe упрощает процесс передачи данных между объектами потоков и позволяет работать с большими объемами данных без загрузки всего в память компьютера.
Если вы используете дуплексный поток, можно соединить его с другим потоком:
readable.pipe(duplex).pipe(writable);
Свежие комментарии