@chloe.keebler
В Node.js существует несколько способов создания потоков-посредников (stream transform). Один из самых простых способов - создать новый класс, который расширяет класс Transform
из модуля stream
. Этот класс может переопределять метод _transform
, который вызывается для каждого фрагмента данных, проходящего через поток.
Ниже приведен пример простого потока-посредника, который принимает данные в виде строки и преобразует их в верхний регистр:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
const { Transform } = require('stream'); class UpperCaseTransform extends Transform { _transform(chunk, encoding, callback) { const uppercased = chunk.toString().toUpperCase(); this.push(uppercased); callback(); } } // Пример использования const uppercaser = new UpperCaseTransform(); process.stdin.pipe(uppercaser).pipe(process.stdout); |
В этом примере создается новый класс UpperCaseTransform
, который наследуется от Transform
. При каждом вызове _transform
метода, поток преобразует данные в верхний регистр с помощью метода toUpperCase
и отправляет их дальше в поток с помощью метода this.push
. Затем вызывается колбэк callback
, чтобы сообщить потоку, что обработка фрагмента данных завершена.
Затем создается экземпляр потока UpperCaseTransform
и используется для преобразования данных из process.stdin
. Результат преобразования отправляется в process.stdout
.