У меня есть три вопроса о коде ниже. Во-первых, почему строка A не отображается на выходе в терминале. Прямо сейчас кажется, что строка B регистрируется, а строка A - нет. Во-вторых, до отметки 4000 миллисекунд я пытался что-то набрать на клавиатуре и ожидал, что кусок кода на C завершит процесс. Однако он продолжал записывать строки, пока не достиг 4 секунд. Когда я пытался запустить alwaysTalking.js сам по себе, мое прерывание клавиатуры фактически завершало программу. Почему здесь не получится? Наконец, что делает линия D? Он передает функцию spawn переменной spawn? Является ли var spawn объектом функции/класса spawn?
Любая помощь будет принята с благодарностью!
AlwaysTalking.js:
var sayings = [
"You may delay, but time will not.",
"Tell me and I forget. Teach me and I remember. Involve me and I learn.",
"It takes many good deeds to build a good reputation, and only one bad one to lose it.",
"Early to bed and early to rise makes a man healthy, wealthy and wise.",
"By failing to prepare, you are preparing to fail.",
"An investment in knowledge pays the best interest.",
"Well done is better than well said."
];
var interval = setInterval(function() {
var i = Math.floor(Math.random() * sayings.length);
console.log(` ${sayings[i]} \n`); //line A
}, 1000);
process.stdin.on('data', function(data) { //C
console.log(`STDIN Data Recieved -> ${data.toString().trim()}`); //C
clearInterval(interval); //C
process.exit(); //C
}); //C
spawn.js:
var spawn = require("child_process").spawn; //line D
var cp = spawn("node", ["alwaysTalking"]);
cp.stdout.on("data", function(data) {
console.log(`STDOUT: ${data.toString()}`); //line B
});
cp.on("close", function() {
console.log("Child Process has ended");
process.exit();
});
setTimeout(function() {
cp.stdin.write("stop");
}, 4000);
На терминале:
$node spawn
STDOUT: abcde You may delay, but time will not.
STDOUT: abcde Tell me and I forget. Teach me and I remember. Involve me and I learn.
STDOUT: abcde By failing to prepare, you are preparing to fail.
STDOUT: STDIN Data Recieved -> stop
Child Process has ended