Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

87
Vistas
How to exit process.stdin.on and then reopen process.stdin.on

I have struggling with an exercise. The client input a certain integer x, according with the integer x they will input x other y values, space-separated. The output will be the addition of each y itself, space-separated.

Example:

Input: 4            |  Input: 5
       21 35 55 66  |         333 53 99 12 55
Output:3 8 10 12    |  Output: 9 8 18 3 10

and so on...

So far so good, my problem is that I don't understand process.stdin.on('data', function() ... )

I didn't find many videos or explanations about this.

From what I understood from 2 short videos of explanations, I did this:

let number = null;

let numOrder = [];


function clientsnum() {
  process.stdout.write("Enter number: ");

  process.stdin.on("data", function (data) {
    number = parseInt(data.toString().trim());
    process.stdin.pause();
  });

  process.stdin.on("pause", function () {
    console.log("Paused");
    process.stdout.write(`${numOrder} ${number}` + "\n"); //for debug
    order();
  });
}

function order() {
  console.log("got here");                   //for debug
  process.stdout.write("numberOrder: ");
  process.stdin.resume();
  process.stdin.on("data", function (data) {
    if (numOrder.length < number) {
      numOrder.push(parseInt(data.toString().trim()));
    } else {
      process.exit();
    }
  });
  process.on('exit', function() {
    console.log('Over')
  })
}
clientsnum();

Sometimes, I can see it doubles on the array. Also, it changes the previous statement of "number".

The exercise show us a template where I saw in other pages, by code I can understand but by practice it doesn't work when I try it "process.stdin.on('end', ...)".

If someone wants to try explain it too. I would appreciate.

Here is the template:

function main(input) {
  process.stdout.write("hello " + input) //write output
}

process.stdin.resume()
process.stdin.setEncoding("utf-8")

var stdin_input = ""

process.stdin.on("data", function(input) {
  stdin_input += input          //read input from stdin
})

process.stdin.on("end", function (){
  main(stdin_input)
})
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

On my second day, after a good shower thinking. I got one solution.

let numOfClient = null;

let orderID = [];

let answers = [];

let questions = ["Enter number of clients: ", "Order ID: "];

function question() {
  process.stdout.write(questions[0]);

  process.stdin.on("data", function (data) {
    answers.push(parseInt(data.toString().trim()));
    numOfClient = answers[0];

    if (answers.length < numOfClient + 1) {
      process.stdout.write(questions[1]);           // Here the question is not answered yet

      if (answers.length !== 1) {                   // So I need to wait for the next interation/loop
        orderID.push(answers[answers.length - 1]);
      }
    } else {
      orderID.push(answers[answers.length - 1]);    // To get the last loop answer
      process.exit();
    }
  });

  process.on("exit", function () {
    // for debug
    console.log(
      `Done, the answers [${answers}] , the numberOfClient ${numOfClient}, the orderID's [${orderID}] `
    );
  });
}

question();
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda