Я пытаюсь реализовать простой сценарий да / нет.
Функция запускается, затем пользователю предлагается ввести, запускать ли ее снова или нет.
Если пользователь вводит «y», то процедура должна повториться.
Если пользователь вводит «n», процедура должна завершиться.
Если ни того, ни другого, вопрос должен повториться.
Вот мой код:
function func(i) {
console.log(i);
ask(i + 1);
}
function ask(i) {
process.stdout.write("again (y/n)?");
process.stdin.on("data", function(data) {
process.stdin.end();
if (data.toString().trim() == "y")
func(i);
else if (data.toString().trim() != "n")
ask(i);
});
}
func(0);
К сожалению, процесс всегда завершается во второй раз, когда задается вопрос.
Я попытался удалить часть process.stdin.end()
, и у меня получилось очень странное поведение:
При первом вводе "y" вопрос задается один раз, а функция запускается один раз.
Второй раз, когда я ввожу "y", вопрос задается дважды, и функция запускается дважды.
В третий раз, когда я ввожу "y", вопрос задается трижды, а функция запускается трижды.
Кроме того, в какой-то момент я начинаю получать эту ошибку:
(node:12336) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added. Use emitter.setMaxListeners() to increase limit
Кто-нибудь может пролить свет на то, что здесь происходит?
Любые предложения о том, как сделать эту работу, будут очень оценены.
Спасибо !!!