Почему функция read(1) вызывает два раза в читаемом событии в узле js?
Есть один файл 'foo.txt', в котором написано 'koushik'. код:-
var fs = require('fs');
var rr = fs.createReadStream('foo.txt');
rr.on('readable', function() {
console.log('readable:', rr.read(1));
});
rr.on('end', function() {
console.log('end');
});
выход:-
k
o
0 ответов
В readable
Событие генерируется, когда есть данные, доступные для чтения из потока.
В read(1)
у вас есть в этом обработчике событий, который будет читать один байт из доступных в настоящее время данных, каждый раз, когда readable
событие пожаров.
Он срабатывает дважды, потому что обработка файлов в node.js решает запустить его дважды.
Вы можете получить ожидаемый результат, если вместо этого не используете аргумент для read()
var fs = require('fs');
var rr = fs.createReadStream('foo.txt');
rr.on('readable', function() {
console.log('readable:', rr.read()); // read all available data
});
rr.on('end', function() {
console.log('end');
});