stream: Emit readable on ended streams via read(0)
cc: @mjijackson
This commit is contained in:
Родитель
eafa902632
Коммит
929e4d9c9a
|
@ -236,7 +236,7 @@ Readable.prototype.read = function(n) {
|
||||||
// the 'readable' event and move on.
|
// the 'readable' event and move on.
|
||||||
if (n === 0 &&
|
if (n === 0 &&
|
||||||
state.needReadable &&
|
state.needReadable &&
|
||||||
state.length >= state.highWaterMark) {
|
(state.length >= state.highWaterMark || state.ended)) {
|
||||||
emitReadable(this);
|
emitReadable(this);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,3 +80,27 @@ var Readable = require('stream').Readable;
|
||||||
console.log('ok 2');
|
console.log('ok 2');
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
(function third() {
|
||||||
|
// Third test, not reading when the stream has not passed
|
||||||
|
// the highWaterMark but *has* reached EOF.
|
||||||
|
var r = new Readable({
|
||||||
|
highWaterMark: 30
|
||||||
|
});
|
||||||
|
|
||||||
|
// This triggers a 'readable' event, which is lost.
|
||||||
|
r.push(new Buffer('blerg'));
|
||||||
|
r.push(null);
|
||||||
|
|
||||||
|
var caughtReadable = false;
|
||||||
|
setTimeout(function() {
|
||||||
|
r.on('readable', function() {
|
||||||
|
caughtReadable = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
process.on('exit', function() {
|
||||||
|
assert(caughtReadable);
|
||||||
|
console.log('ok 3');
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче