Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Тест работы с потоками sdtin и stdout (https://javascript.ru/forum/node-js-io-js/82519-test-raboty-s-potokami-sdtin-i-stdout.html)

ksa 19.05.2021 09:44

Тест работы с потоками sdtin и stdout
 
Читаю книжку по потокам... Там первым же примером есть такой код

process.stdin.setEncoding('utf8')

process.stdin.on('readable', function() {
	var input = process.stdin.read();
	if (input !== null) {
		process.stdout.write(input)
		var command = input.trim();
		if (command == 'exit') {
			process.exit(0);
		}
	}
})


Автор уверяет что процесс завершится если с клавиатуры набрать exit.
У меня же все завершается при вводе любой строки. Т.е. происходит ожидание только "первой порции" из потока, обработка и конец программы...

Запускаю так
node tmp.js

Далее набор символов и нажимаю Enter.
Происходит вывод введенного мной и программа завершается.

Вот меня и заинтересовали такие моменты:
- Почему сначала ожидание события есть, а после ввода его уже нет?
- Может в примере чего-то не хватает?

Vlasenko Fedor 19.05.2021 11:34

process.stdin.setEncoding('utf8')
process.stdin.on('data', function(input) {
    if (input !== null) {
        process.stdout.write(input)
        if ( input.trim() === 'exit') {
            process.exit(0);
        }
    }
})

вариант
а что за книга?

ksa 19.05.2021 12:08

Цитата:

Сообщение от Vlasenko Fedor
а что за книга?

Вот эта
https://ru.pdfdrive.com/Изучае...182019825.html

Цитата:

Сообщение от Vlasenko Fedor
вариант

Т.е. это разные события ведут себя по разному?

Vlasenko Fedor 19.05.2021 12:37

Точнне там EventEmitter
подписываемся и ждем события
если нет подписчиков выходим
Здесь есть больше примеров

ksa 19.05.2021 14:17

Цитата:

Сообщение от Vlasenko Fedor
Точнне там EventEmitter
подписываемся и ждем события
если нет подписчиков выходим

Так и в "книжном" примере все так же... Но "ждет" только до первого срабатывания события. :(

Цитата:

Сообщение от Vlasenko Fedor
Здесь есть больше примеров

Спасибо, обязательно просмотрю. Может и книжечку какую подсоветуешь почитать?

Vlasenko Fedor 19.05.2021 14:43

Я на телеграм каналах вишу по книгам
https://t.me/bzd_channel
https://t.me/physics_lib
там есть поиск
из последнего, что понравилось
Шаблоны проектирования Node.js / пер. с анг. А. Н. Киселева. – М.: ДМК Пресс,
2017. – 396 с.: ил.
Олимпиадное программирование. / пер. с англ. А. А. Слинкин – М.:
ДМК Пресс, 2018. – 300 с.: ил.
пусть не пугает название последней, подробно и просто разложены решения задач

destus 19.05.2021 15:14

ksa,
ещё важно понимать для какой версии Node.js написан учебник. Всё меняется каждые 6 месяцев.
process.stdin.setEncoding('utf8')

process.stdin.on('readable', function() {
  var input = process.stdin.read();
  if (input !== null) {
    process.stdout.write(input);
    var command = input.trim();
    if (command == 'exit') {
      process.exit(0);
    }
    process.stdin.resume()
  }
})

ksa 19.05.2021 15:42

Vlasenko Fedor, спасибо еще раз. :)

Цитата:

Сообщение от destus
ещё важно понимать для какой версии Node.js написан учебник

Он издан 2017... :(
А тренируюсь на Ноде "последней".


Часовой пояс GMT +3, время: 11:46.