Có, có thể, dễ dàng và phổ biến. Sau đây là luồng dữ liệu đường ống từ một nguồn duy nhất đến nhiều nguồn. Nó cho bạn thấy một hàm callback vô danh mà được đặt trên vòng lặp sự kiện có chứa các dòng ghi chức năng mà làm công việc ghi thực tế:
var fs = require('fs');
var rs1 = fs.createReadStream ('input1.txt');
var ws1 = fs.createWriteStream('output1.txt');
var ws2 = fs.createWriteStream('output2.txt');
rs1.on('data', function (data) {
console.log(data.toString('utf8'));
ws1.write('1: ' + data);
ws2.write('2: ' + data);
});
Một cách dễ dàng hơn là sử dụng .pipe()
chức năng.
var fs = require('fs');
var rs1 = fs.createReadStream ('input1.txt');
var ws1 = fs.createWriteStream('output1.txt');
var ws2 = fs.createWriteStream('output2.txt');
rs1.pipe(ws1);
rs1.pipe(ws2);
Các .pipe()
cho phép bạn làm những điều tiện lợi như chaining đường ống dẫn trong tương lai cho các thao tác đường ống, rất giống với khái niệm unix của một cái gì đó giống như du . | sort -rn | less
nơi bạn có thể sử dụng nhiều đường ống để xử lý.
Hãy để người xử lý đầu tiên sử dụng nó là luồng, sau đó chuyển nó qua bộ xử lý thứ hai. –
@BenjaminGruenbaum hoặc thiết kế "tee" duy trì nhiều luồng đầu ra và chỉ ghi dữ liệu từ luồng đầu vào vào mỗi đầu ra. – SheetJS
Đợi đã, nvm. Bạn có thể tạo luồng cho nhiều địa điểm bạn muốn - nó rất đơn giản. –