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

216
Vistas
node.js readline con declaraciones if / else: se atasca si la entrada está vacía

Quiero generar preguntas y recibir respuestas como entrada en una terminal. Para cada pregunta, hay una verificación, en este caso, si se proporcionó la entrada o no. Si es así, se debe generar la siguiente pregunta; si no, la pregunta debe repetirse.

Si se proporciona entrada cada vez, se llama a resolve() y pasa a la siguiente pregunta, como debería. Pero el problema ocurre si la primera vez que se envía una entrada vacía. Se atasca un poco y resolve() ya no funciona

 const rdline = readline.createInterface({ input: process.stdin, output: process.stdout }); let userName, userSurname = "";

1ra pregunta

 const question_name = () => { return new Promise((resolve) => { rdline.question("What's your name?\n", name => { if (name) { userName = name; resolve(); } else { question_name(); } }); }); };

2da pregunta

 const question_surname = () => { return new Promise((resolve) => { rdline.question("What's your surname?\n", surname => { if (surname) { userSurname = surname; resolve(); } else { question_surname(); } }); }); };

llamar a las dos preguntas

 const askUser = async () => { await question_name(); await question_surname(); console.log(`Hi, ${userName} ${userSurname}`); rdline.close(); }; askUser();
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Parece que no está resolviendo los datos y espera que el nombre de usuario y userSurname de askUser userName

En su lugar, resuelva las respuestas y las preguntas repetidas, y asígnelas dentro askUser :

 // mock rdline const rdline = { question: (a,b) => a.match(/surname/) ? b('Test') : b('User'), close: () => {} }; const question_name = () => { return new Promise((resolve) => { rdline.question("What's your name?\n", name => { if (name) { resolve(name); } else { resolve(question_name()); } }); }); }; const question_surname = () => { return new Promise((resolve) => { rdline.question("What's your surname?\n", surname => { if (surname) { resolve(surname); } else { resolve(question_surname()); } }); }); }; const askUser = async () => { const userSurname = await question_name(); const userName = await question_surname(); console.log(`Hi, ${userName} ${userSurname}`); rdline.close(); }; askUser();

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay una función llamada resolver en js. Le sugiero que haga function questionname() {...} en lugar de llamar a una función de flecha. Además, use otro nombre en lugar de resolver.

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