Tôi đang viết một mô-đun, một luồng có thể ghi. Tôi muốn triển khai giao diện ống cho người dùng của mình.Cách chính xác để tạm dừng luồng có thể đọc được bằng đường ống từ luồng có thể ghi trong nútj là gì?
Nếu một số lỗi xảy ra, tôi cần tạm dừng luồng có thể đọc và phát ra sự kiện lỗi. Sau đó, người dùng sẽ quyết định - nếu anh ấy chấp nhận lỗi, anh ấy có thể tiếp tục xử lý dữ liệu.
var writeable = new BackPressureStream();
writeable.on('error', function(error){
console.log(error);
writeable.resume();
});
var readable = require('fs').createReadStream('somefile.txt');
readable.pipe.(writeable);
Tôi thấy nút đó cung cấp cho chúng tôi phương pháp readable.pause()
, có thể được sử dụng để tạm dừng luồng có thể đọc được. Nhưng tôi không thể biết cách tôi có thể gọi nó từ mô-đun luồng có thể ghi của mình:
var Writable = require('stream').Writable;
function BackPressureStream(options) {
Writable.call(this, options);
}
require('util').inherits(BackPressureStream, Writable);
BackPressureStream.prototype._write = function(chunk, encoding, done) {
done();
};
BackPressureStream.prototype.resume = function() {
this.emit('drain');
}
Áp suất ngược có thể được thực hiện trong luồng có thể ghi?
P.S. Có thể sử dụng các sự kiện pipe/unpipe
, cung cấp luồng có thể đọc làm thông số. Nhưng nó cũng được nói, rằng đối với các luồng đường ống, cơ hội duy nhất để tạm dừng là để bỏ đọc luồng có thể đọc được từ ghi.
Tôi đã hiểu đúng chưa? Tôi phải bỏ qua luồng ghi có thể ghi của mình cho đến khi cuộc gọi của người dùng tiếp tục? Và sau khi cuộc gọi của người dùng tiếp tục, tôi có thể đọc lại luồng có thể đọc được không?
quan tâm đến việc bắt đầu một bounty cho một này? –
này, bạn có tìm thấy câu trả lời cho câu hỏi của mình không? –