Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

217
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda