node.js readline close怎样触发

 我来答
育知同创教育
2017-12-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

如何使用Readline

  • 创建Readline实例

  • 学习里面的接口方法

  • 学习监听与处理Readline事件

  • 创建Readline实例

    readline.createInterface(options)

    创建一个readline的接口实例. 接受一个Object类型参数,可传递以下几个值:

  • input - 要监听的可读流 (必需)

  • output - 要写入 readline 的可写流 (必须).

  • completer - 用于 Tab 自动补全的可选函数。(不常用)

  • terminal - 如果希望 input 和 output 流像 TTY 一样对待,那么传递参数 true ,并且经由 ANSI/VT100 转码。 默认情况下检查 isTTY 是否在 output 流上实例化。(不常用)

    var readline = require(‘readline’); 
    var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
    });

  • 接口


  • rl.close()

  • 关闭接口实例 (Interface instance), 放弃控制输入输出流。”close” 事件会被触发

  • rl.pause()

    暂停 readline 的输入流 (input stream), 如果有需要稍后还可以恢复。

  • rl.prompt([preserveCursor])

    为用户输入准备好readline,将现有的setPrompt选项放到新的一行,让用户有一个新的地方开始输入。将preserveCursor设为true来防止光标位置被重新设定成0。

  • rl.question(query, callback)

    预先提示指定的query,然后用户应答后触发指定的callback。 显示指定的query给用户后,当用户的应答被输入后,就触发了指定的callback

  • rl.resume()

    恢复 readline 的输入流 (input stream).

  • rl.setPrompt(prompt)

    设置提示符,例如当你在命令行运行 node 时,你会看到(prompt)

  • rl.write(data[, key]) 

  • 第一个简单的readline案例

  • var readline = require('readline');

  • var rl = readline.createInterface(process.stdin,process.stdout);


  • // question方法

  • rl.question('what is you name? ',function(answer){

  •  console.log('my name is ' + answer);

  •  //不加close,则不会结束

  •  rl.close();

  • });

  • // close事件监听

  • rl.on('close',function(){

  •  console.log('欢迎下次再来');

  •  process.exit(0);

  • });123456789101112131415

  • 类似命令行的输入出

  • var readline = require('readline');

  • var rl = readline.createInterface(process.stdin,process.stdout);

  • rl.setPrompt('please>');

  • rl.prompt();

  • rl.on('line',(line)=>{

  •  switch(line.trim()){

  •    case 'pause':

  •      rl.pause();

  •      break;

  •    case 'copy':

  •      console.log('复制');

  •      break;

  •    case 'hello':

  •        rl.write("Write");

  •        console.log('world!');

  •        break;

  •    default:

  •      console.log('没有找到命令');

  •      break;

  •  }

  •  rl.prompt();

  • });


  • rl.on('close',function(){

  •  console.log('欢迎下次再来');

  •  process.exit(0);

  • });

  • rl.on('pause', function() {

  •  console.log('Readline 输入暂停.');

  • });12345678910111213141516171819202122232425262728293031

  • 事件

    事件:’line’

    function (line) {}

    在 input 流接受了一个 \n 时触发,通常在用户敲击回车或者返回时接收。 这是一个监听用户输入的利器。

    example:

  • rl.on('line', (cmd) => {

  •  console.log(`You just typed: ${cmd}`);

  • });1234

  • 事件:’pause’

    function () {}

    不论何时,只要输入流被暂停就会触发。 
    同样当输入流未被暂停,但收到 SIGCONT 也会触发。 (详见 SIGTSTP 和 SIGCONT 事件)

    example:

  • rl.on('pause', function() {

  •  console.log('Readline 输入暂停.');

  • });1234

  • 事件: ‘resume’

    function () {}

    不论何时,只要输入流重新启用就会触发。 
    example:

  • rl.on('resume', function() {

  •  console.log('Readline 恢复.');

  • });1234

  • 事件:’close’

    function () {}

    当 close() 被调用时触发。 
    当 input流接收到”结束”事件时也会被触发. 一旦触发,应当认为Interface实例 “结束” . 例如, 当input流接收到^D时, 分别被认为EOT. 
    当 input 流接收到一个 ^C 时,即使没有 SIGINT 监听器,也会触发这个事件,分别被称为 SIGINT 。 
    example:

  • rl.on('close',function(){

  •  console.log('欢迎下次再来');

  •  process.exit(0);

  • });12345

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式