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

285
Vistas
Tome múltiples entradas del usuario usando readline en Node. ¿Dónde llamo a la función?

Soy un principiante completo. Entonces, aquí en Stack Overflow encontré esta solución de "Cómo tomar entradas múltiples usando readline, pero no puedo encontrar cómo aplicar esta función. Lo puse en la función principal y toma mi entrada pero no funciona Mi salida muestra NaN. ¿Alguien puede ayudarme a solucionar esto?

Aquí está mi código

 function simpleInterest (money, rate, time) { simpleInterest=money*rate*time; return simpleInterest; } let money; let rate; let time; 'use strict' const readline = require('readline') const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) const question1 = () => { return new Promise((resolve, reject) => { rl.question('Total Money: ', (money) => { resolve() }) }) } const question2 = () => { return new Promise((resolve, reject) => { rl.question('Interest Rate: ', (rate) => { resolve() }) }) } const question3 = () => { return new Promise((resolve, reject) => { rl.question( 'How Many Years: ', (time) => { resolve() }) }) } const main = async () => { await question1() await question2() await question3() //Here I'm calling the Function let profit= simpleInterest(money, rate, time) console.log("total", profit) rl.close() } main()
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Te faltan un par de piezas clave en el rompecabezas de las promesas. resolve() acepta un argumento opcional, que es el valor en el que debe resolverse la promesa. Sin un argumento, la promesa se resuelve como indefinida. Sináticamente, esto se ve como resolve(money) , por ejemplo.

El segundo paso es asignar el valor de la promesa resuelta a una variable o usarlo en una expresión. const money = await question1() , por ejemplo.

Es posible evitar estos pasos asignando las variables globales que ha creado a partir de las devoluciones de llamada, pero prefiero usar promesas que mantienen las cosas en el ámbito local.

Otro matiz que es fácil pasar por alto es que la entrada del usuario se devuelve como una cadena. Puede convertir estas cadenas en números con + .

Como optimización, tiene prácticamente el mismo código tres veces con diferentes nombres de variables. Esto indica una oportunidad potencial para abstraer la lógica de una función que puede llamar con diferentes parámetros, evitando la repetición.

 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const ask = msg => new Promise(resolve => rl.question(msg, response => resolve(response)) ); const simpleInterest = (money, rate, time) => money * rate * time ; const main = async () => { const money = await ask("Total Money: "); const rate = await ask("Interest Rate: "); const time = await ask("How Many Years: "); console.log(simpleInterest(+money, +rate, +time)); rl.close(); }; main();

Ahora, no se ha agregado el manejo de errores, por lo que es posible que desee escribir un ciclo para seguir preguntando hasta que el usuario haya ingresado un número.

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