我想輸出問題并在終端中接收答案作為輸入。對于每個問題,都有一個檢查,在這種情況下,是否提供了輸入。如果是,則應輸出下一個問題;如果沒有,問題應該回圈。
如果每次都提供輸入,則會resolve()被呼叫并繼續進行下一個問題,這是應該的。但是如果第一次發送空輸入,就會出現問題。它有點卡住了resolve(),不再起作用
const rdline = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let userName, userSurname = "";
第一個問題
const question_name = () => {
return new Promise((resolve) => {
rdline.question("What's your name?\n", name => {
if (name) {
userName = name;
resolve();
} else {
question_name();
}
});
});
};
第二個問題
const question_surname = () => {
return new Promise((resolve) => {
rdline.question("What's your surname?\n", surname => {
if (surname) {
userSurname = surname;
resolve();
} else {
question_surname();
}
});
});
};
呼叫兩個問題
const askUser = async () => {
await question_name();
await question_surname();
console.log(`Hi, ${userName} ${userSurname}`);
rdline.close();
};
askUser();
uj5u.com熱心網友回復:
看來你沒有解決資料和期待userName,并userSurname在存在askUser。
而是解決答案和重復問題,并將它們分配到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();
uj5u.com熱心網友回復:
js中有一個叫做resolve的函式。我建議你做
function questionname(){...} 而不是呼叫箭頭函式。此外,使用另一個名稱而不是決議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388222.html
標籤:javascript 节点.js 阅读线
上一篇:Discord.js:roles.some(r=>!message.member.roles.cache.has(r))不起作用
