📜  readline 同步 javascript (1)

📅  最后修改于: 2023-12-03 15:19:46.746000             🧑  作者: Mango

readline 同步 JavaScript

简介

readline 是 Node.js 中内建的一个模块,用于从终端逐行读取用户的输入。它提供了一种简单的方法来创建和管理交互式的命令行界面。

使用 readline 同步读取用户输入,可以方便地实现等待用户输入后再执行下一步操作的功能。这在一些需要与用户交互的应用程序或命令行工具中非常有用。

安装

readline 是 Node.js 自带的模块,无需单独安装。可以直接在项目中引入:

const readline = require('readline');
使用 readline 同步读取用户输入

以下是一个基本的示例,演示了如何使用 readline 来同步读取用户输入:

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

function askQuestion(question) {
  return new Promise((resolve, reject) => {
    rl.question(question, (answer) => {
      resolve(answer);
    });
  });
}

async function main() {
  const name = await askQuestion("What is your name? ");
  console.log("Hello, " + name + "!");

  rl.close();
}

main();

在上面的例子中,我们首先创建了一个 readline 接口 rl,并通过 process.stdinprocess.stdout 来设置输入和输出流。然后定义了一个 askQuestion 函数,用于提示用户输入问题,并返回用户输入的答案。

main 函数中,我们使用 await 关键字来等待 askQuestion 函数的返回值,以确保在获取到用户输入之后再执行下一步操作。最后,我们关闭 readline 接口以释放资源。

注意事项
  • readline 是基于事件的,所以在实际使用时需要小心处理异步操作的顺序和流程。
  • 需要格外注意输入和输出流的关闭,以避免资源泄漏。
  • 为了避免回调地狱,建议使用 Promiseasync/await 来简化代码。
  • 在处理多个问题时,可以使用递归或循环进行多次交互。

以上是关于如何使用 readline 同步读取用户输入的介绍。希望对你有帮助!更多详细的使用方法和示例可以查看 Node.js 官方文档