Ser*_*ket 13 javascript node.js
我刚刚开始使用 Node.js,我不知道如何获取用户输入。我正在寻找 python 函数input()或 C 函数的 JavaScript 对应版本gets。谢谢。
Jos*_*osh 56
这也可以通过 Promise 来完成。它也比使用外部 npm 模块更安全。不再需要使用回调语法。
来自@Willian 的更新答案。这适用于 async/await 语法和 ES6/ES7。
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const prompt = (query) => new Promise((resolve) => rl.question(query, resolve));
// Usage inside aync function do not need closure demo only
(async() => {
try {
const name = await prompt("What's your name: ");
// Can use name for next question if needed
const lastName = await prompt(`Hello ${name}, what's your last name?: `);
// Can prompt multiple times
console.log(name, lastName);
rl.close();
} catch (e) {
console.error("Unable to prompt", e);
}
})();
// When done reading prompt, exit program
rl.on('close', () => process.exit(0));
Run Code Online (Sandbox Code Playgroud)
Wil*_*ian 13
您可以使用readlineor prompt,所以我将引导您完成这两个示例...
readline是 Node.js 中的内置模块。你只需要运行下面的代码:
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("What is your name ? ", function(name) {
rl.question("Where do you live ? ", function(country) {
console.log(`${name}, is a citizen of ${country}`);
rl.close();
});
});
rl.on("close", function() {
console.log("\nBYE BYE !!!");
process.exit(0);
});
Run Code Online (Sandbox Code Playgroud)
如果所有这些听起来很复杂,请查看prompt示例。
prompt 是 npm 上可用的模块:
运行命令npm install prompt安装包,然后复制/粘贴以下代码:
const prompt = require('prompt');
prompt.start();
prompt.get(['username', 'email'], function (err, result) {
if (err) { return onErr(err); }
console.log('Command-line input received:');
console.log(' Username: ' + result.username);
console.log(' Email: ' + result.email);
});
function onErr(err) {
console.log(err);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
享受!
nes*_*_pp 11
如果您想使用 ESM(import而不是require):
import * as readline from 'node:readline/promises'; // This uses the promise-based APIs
import { stdin as input, stdout as output } from 'node:process';
const rl = readline.createInterface({ input, output });
const answer = await rl.question('What do you think of Node.js? ');
console.log(`Thank you for your valuable feedback: ${answer}`);
rl.close();
Run Code Online (Sandbox Code Playgroud)
来源: https: //nodejs.org/api/readline.html#readline
请注意,这是一个新功能。从上面链接的来源来看,似乎需要 Node v17.9.1 或更高版本。
| 归档时间: |
|
| 查看次数: |
16216 次 |
| 最近记录: |