当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js readlinePromises.createInterface(options)用法及代码示例


readlinePromises.createInterface(options)

添加于:v17.0.0

参数
  • options <Object>
    • input <stream.Readable> 可读流听。这个选项是必需的.
    • output <stream.Writable> Writable 流将读取行数据写入。
    • completer <Function> 用于选项卡自动完成的可选函数。
    • terminal <boolean> true 如果 inputoutput 流应被视为 TTY,并写入 ANSI/VT100 转义码。 默认: 在实例化时检查 output 流上的 isTTY
    • history <string[]> 历史行的初始列表。只有当terminal 由用户或内部output 检查设置为true 时,此选项才有意义,否则根本不会初始化历史缓存机制。 默认: []
    • historySize <number> 保留的最大历史行数。要禁用历史记录,请将此值设置为 0 。只有当terminal 被用户或内部output 检查设置为true 时,此选项才有意义,否则根本不会初始化历史缓存机制。 默认: 30
    • removeHistoryDuplicates <boolean> 如果 true ,当添加到历史列表的新输入行与旧输入行重复时,这将从列表中删除旧行。 默认: false
    • prompt <string> 要使用的提示字符串。 默认: '> '
    • crlfDelay <number> 如果 \r\n 之间的延迟超过 crlfDelay 毫秒,则 \r\n 将被视为单独的行尾输入。 crlfDelay 将被强制为不小于 100 的数字。它可以设置为 Infinity ,在这种情况下 \r 后跟 \n 将始终被视为单个换行符(对于带有 \r\n 行分隔符的 reading files 可能是合理的)。 默认: 100
    • escapeCodeTimeout <number> 持续时间 readlinePromises 将等待一个字符(当读取一个以毫秒为单位的模棱两可的键序列时,它既可以使用目前读取的输入形成完整的键序列,又可以采用额外的输入来完成更长的键顺序)。 默认: 500
    • tabSize <integer> 制表符的空格数等于(最小 1)。 默认: 8
  • 返回: <readlinePromises.Interface>

readlinePromises.createInterface() 方法创建一个新的 readlinePromises.Interface 实例。

const readlinePromises = require('node:readline/promises');
const rl = readlinePromises.createInterface({
  input: process.stdin,
  output: process.stdout
});

创建 readlinePromises.Interface 实例后,最常见的情况是监听 'line' 事件:

rl.on('line', (line) => {
  console.log(`Received: ${line}`);
});

如果此实例的terminaltrue,那么如果output 流定义了output.columns 属性并在列发生更改时在output 上发出'resize' 事件( process.stdout 是 TTY 时会自动执行此操作)。

的使用completer函数#

completer 函数将用户输入的当前行作为参数,并返回带有 2 个条目的 Array

  • 一个 Array 与完成匹配的条目。
  • 用于匹配的子字符串。

例如:[[substr1, substr2, ...], originalsubstring]

function completer(line) {
  const completions = '.help .error .exit .quit .q'.split(' ');
  const hits = completions.filter((c) => c.startsWith(line));
  // Show all completions if none found
  return [hits.length ? hits : completions, line];
}

completer 函数也可以返回 <Promise> ,或者是异步的:

async function completer(linePartial) {
  await someAsyncWork();
  return [['123'], linePartial];
}

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 readlinePromises.createInterface(options)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。