streams2: Use StringDecoder.end
This commit is contained in:
Родитель
cf0b4ba410
Коммит
f624ccb475
|
@ -153,6 +153,13 @@ Readable.prototype.read = function(n) {
|
|||
if (!chunk || !chunk.length) {
|
||||
// eof
|
||||
state.ended = true;
|
||||
if (state.decoder) {
|
||||
chunk = state.decoder.end();
|
||||
if (chunk && chunk.length) {
|
||||
state.buffer.push(chunk);
|
||||
state.length += chunk.length;
|
||||
}
|
||||
}
|
||||
// if we've ended and we have some data left, then emit
|
||||
// 'readable' now to make sure it gets picked up.
|
||||
if (!sync) {
|
||||
|
@ -395,11 +402,26 @@ Readable.prototype.wrap = function(stream) {
|
|||
|
||||
stream.on('end', function() {
|
||||
state.ended = true;
|
||||
if (state.length === 0)
|
||||
if (state.decoder) {
|
||||
var chunk = state.decoder.end();
|
||||
if (chunk && chunk.length) {
|
||||
state.buffer.push(chunk);
|
||||
state.length += chunk.length;
|
||||
}
|
||||
}
|
||||
|
||||
if (state.length > 0)
|
||||
this.emit('readable');
|
||||
else
|
||||
endReadable(this);
|
||||
}.bind(this));
|
||||
|
||||
stream.on('data', function(chunk) {
|
||||
if (state.decoder)
|
||||
chunk = state.decoder.write(chunk);
|
||||
if (!chunk || !chunk.length)
|
||||
return;
|
||||
|
||||
state.buffer.push(chunk);
|
||||
state.length += chunk.length;
|
||||
this.emit('readable');
|
||||
|
|
Загрузка…
Ссылка в новой задаче