Заключение специальных функций модуля readline
в обещания, вероятно, по-прежнему является лучшим подходом. Здесь мы имитируем функциональность Python input
и C ++ getline
.
ПРИМЕЧАНИЕ, событие узла имеет не только функцию on
, но также once
функция.
// input.js
const readline = require('readline');
const cmd = readline.createInterface({
input: process.stdin,
output: process.stdout
});
/**
* Emulate Python's `input` function.
*/
export async function input(prompt) {
return new Promise(r => cmd.question(prompt, r));
}
/**
* Emulate C++'s `getline` function.
*/
export async function getline() {
return new Promise(r => cmd.once('line', r));
}
// main.js
async function main() {
const x = await input('What is x?');
console.log('x is', x);
console.log('What is y?');
const y = await getline();
console.log('y is', y);
}
main();