当前位置: 首页 > news >正文

做彩票网站代理犯法吗6淮南app

做彩票网站代理犯法吗6,淮南app,怎么建立一个网站?,网站可以做多少优化关键词‌“书到用时方恨少,事非经过不知难。”‌ —— 陆游 目录 ‌readline 是什么?‌基本用法:‌创建 Interface 类:核心流程‌: ‌Interface 类的关键事件:line:close:pause&#xff1a…

‌“书到用时方恨少,事非经过不知难。”‌ —— 陆游

目录

  • ‌readline 是什么?
  • ‌基本用法:
    • ‌创建 Interface 类:
    • 核心流程‌:
  • ‌Interface 类的关键事件:
    • line:
    • close:
    • pause:
    • resume:
    • prompt:
  • 关键事件表格展示:

‌readline 是什么?

readline 是 Node.js 内置的核心模块,用于‌逐行处理输入/输出流‌(如文件、命令行输入),通过事件驱动机制实现非阻塞式行级数据处理‌。它适用于需要交互式逐行读取的场景(如命令行工具、日志解析等)。

‌基本用法:

‌创建 Interface 类:

通过 readline.createInterface() 方法创建接口实例,每个实例都关联一个input可读流和一个outpu可写流,绑定输入/输出流‌。

const readline = require('readline');
const rl = readline.createInterface({input: process.stdin, // 输入流(如文件流、标准输入)output: process.stdout // 输出流(如标准输出)
});

核心流程‌:

  • 绑定输入流‌:如 fs.createReadStream(‘file.txt’) 读取文件‌;‌
  • 逐行处理‌:通过事件监听逐行获取数据;
  • 关闭接口‌:完成操作后调用 rl.close() 释放资源‌

‌Interface 类的关键事件:

line:

此事件在输入流(例如文件流或标准输入)检测到换行符(\n,\r\r\n时触发line事件,即用户按下<Enter> 键或 )时即刻触发,意味着我们可以借此机会对每一行输入数据进行实时处理。

设想有一个名为 example.txt 的文本文件,内容如下:

第一行内容
第二行内容
第三行内容

我们的目标是逐行读取这个文件,并将每行的内容打印到控制台。

实现步骤:

  • ‌引入所需模块‌:首先,需要引入 Node.js 的 fs(文件系统)模块和 readline 模块。
  • 创建文件读取流‌:利用 fs.createReadStream 方法,我们可以创建一个指向 example.txt 文件的读取流。‌
  • 构建 Interface 实例‌:接着,需要用这个读取流作为输入,来创建一个 readline.Interface 实例。
  • 监听 line 事件‌:为 Interface 实例绑定一个 line 事件监听器,这样每当读取到一行新数据时,该监听器就会被触发,并接收到这行数据作为参数。
  • 处理数据‌:在 line 事件的回调函数中,可以对接收到的行数据进行处理,本例中即将其打印到控制台。
  • 关闭接口‌(可选):虽然对于文件读取来说不是必需的,但在处理完所有行后关闭 Interface 实例是一个好习惯。

示例代码:

const fs = require('fs');
const readline = require('readline');// 创建一个指向 example.txt 文件的读取流
const fileStream = fs.createReadStream('example.txt');// 利用文件读取流构建一个 readline.Interface 实例
const rl = readline.createInterface({input: fileStream,crlfDelay: Infinity // 确保兼容不同系统的换行符
});// 监听 line 事件,逐行处理文件内容
rl.on('line', (line) => {console.log(line); // 将读取到的行内容打印到控制台
});// 监听 close 事件,以便在所有行处理完毕后执行清理操作(本例中无需特别处理)
rl.on('close', () => {console.log('文件读取完成。');
});

close:

close事件在 Interface 实例被关闭时触发。这通常发生在所有输入数据都已经被处理完毕,且不再需要该接口时。 它可以释放与接口相关联的资源,并确保不会有未处理的事件或回调函数残留。

close 事件的触发时机:

  • 当显式调用 rl.close() 方法时,close 事件会被触发。
  • 如果输入流(如文件流)自然结束(例如,文件被完全读取),并且没有更多的数据可以读取,那么 Interface 会自动关闭,并触发 close 事件。
  • 在某些情况下,如遇到错误或异常导致接口无法继续工作时,Interface 也可能会自动关闭,并触发 close 事件。

close 事件的处理:
在 close 事件的回调函数中,可以执行任何需要在接口关闭时进行的清理操作。这可能包括关闭文件描述符、释放内存、结束数据库连接、发送通知等。

示例代码:
以下是一个包含 close 事件处理的示例代码,它读取一个文件并在处理完所有行后自动关闭接口。

const fs = require('fs');
const readline = require('readline');// 创建一个指向文件的读取流
const fileStream = fs.createReadStream('example.txt');// 构建 readline.Interface 实例
const rl = readline.createInterface({input: fileStream,crlfDelay: Infinity // 兼容不同系统的换行符
});// 监听 line 事件,逐行处理文件内容
rl.on('line', (line) => {console.log(line); // 打印读取到的行内容
});// 监听 close 事件,执行清理操作
rl.on('close', () => {console.log('文件已完全读取,接口已关闭。');// 在这里执行任何需要的清理操作
});// 注意:对于文件流,通常不需要显式调用 rl.close(),
// 因为当文件读取完毕时,流会自动结束,从而触发 close 事件。

pause:

pause 事件是 readline 模块中的一个事件,它在用户按下 Ctrl+S 组合键时被触发,用于暂停终端的输出‌。不过,需要注意的是,readline 默认情况下并不会直接处理这个 pause 事件来暂停输入流,而是会暂停终端的输出显示。 这意味着,尽管 pause 事件被触发了,但输入流本身可能仍然会继续接收数据,只是这些数据暂时不会在终端上显示出来。

为了正确处理 pause 事件并暂停输入流,我们可以采取以下步骤:

  • 使用 readline.createInterface 方法创建一个 readline.Interface 实例。
  • 监听 pause 事件,并在事件处理程序中调用 rl.pause() 方法来手动暂停输入流(尽管这通常不是必需的,因为 pause 事件本身并不会自动暂停输入流,但我们可以在这里执行其他与暂停相关的逻辑)。

‌手动暂停和恢复输入流的示例‌:

const readline = require('readline');
const rl = readline.createInterface({input: process.stdin,output: process.stdout
});// 监听 pause 事件(尽管它通常不会直接暂停输入流)
rl.on('pause', () => {console.log('pause 事件被触发,但输入流不会自动暂停。');// 你可以在这里执行其他逻辑,比如显示一个提示信息
});// 手动暂停输入流(如果需要)
// rl.pause(); // 这行代码会在调用时暂停输入流,直到你调用 rl.resume()// 监听其他事件,如 line 事件来处理输入数据
rl.on('line', (line) => {console.log(`接收到输入: ${line}`);// 根据需要处理输入数据
});// 在适当的时候关闭接口
// rl.close(); // 这行代码会在你准备好关闭接口时调用

resume:

在 readline 模块中,resume 事件是一个与 pause 事件相对应的事件,它用于指示输入流已经被恢复。 当输入流处于暂停状态时,如果用户执行了某些操作(比如按下 Ctrl+Q 组合键,这取决于终端和操作系统的具体行为),或者在代码中显式调用了 rl.resume() 方法,resume 事件就会被触发。

resume 事件的触发时机:

  • 当之前被暂停的输入流被恢复时,resume 事件会被触发。
  • 这通常发生在用户按下 Ctrl+Q 组合键(在大多数终端和操作系统中,Ctrl+S 用于暂停输出,Ctrl+Q 用于恢复输出,但请注意这可能会因环境而异)或者在代码中调用了 rl.resume() 方法之后。

resume 事件的处理:
在 resume 事件的回调函数中,我们可以执行任何需要在输入流恢复时进行的操作。这可能包括更新用户界面、恢复数据处理逻辑等。

const readline = require('readline');
const rl = readline.createInterface({input: process.stdin,output: process.stdout
});// 监听 resume 事件
rl.on('resume', () => {console.log('输入流已恢复。');// 在这里执行任何需要在输入流恢复时进行的操作
});// 监听 pause 事件(尽管它通常不会直接暂停输入流,但可以作为用户操作的指示)
rl.on('pause', () => {console.log('输入流已暂停(注意:这通常是由 Ctrl+S 触发的,但 readline 默认不会直接暂停输入流)。');// 你可以在这里执行其他逻辑,比如显示一个提示信息// 如果需要,你也可以显式调用 rl.pause() 来暂停输入流,但通常这不是必需的
});// 监听 line 事件来处理输入数据
rl.on('line', (line) => {console.log(`接收到输入: ${line}`);// 根据需要处理输入数据
});// 在适当的时候关闭接口
// rl.close(); // 这行代码会在你准备好关闭接口时调用// 注意:在这个示例中,我们没有显式调用 rl.pause() 来暂停输入流,
// 因为 readline 默认不会将 Ctrl+S 解释为暂停输入流的命令。
// 如果你想测试 resume 事件,你可能需要在其他上下文中暂停输入流,
// 或者使用其他方法来模拟输入流的暂停和恢复。

需要注意的是,readline 模块默认不会将 Ctrl+S 和 Ctrl+Q 组合键解释为暂停和恢复输入流的命令。这些组合键通常用于控制终端输出的暂停和恢复。如果你希望在代码中显式控制输入流的暂停和恢复,你应该使用 rl.pause() 和 rl.resume() 方法。

prompt:

用于在终端中显示提示符,并准备接收用户输入。
rl.prompt([preserveCursorPosition]) 方法会向用户显示一个可配置的提示符(通常是一个字符串,如 > ),并将输入光标移动到提示符之后,等待用户输入。这个方法不会触发一个事件,而是直接作为一个命令来执行。

const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout,prompt: 'MyPrompt> ' // 设置自定义提示符
});// 监听 line 事件来处理用户输入
rl.on('line', (input) => {console.log(`你输入了: ${input}`);// 再次显示提示符以等待下一次输入rl.prompt();
});// 显示提示符以开始接收输入
rl.prompt();

关键事件表格展示:

‌事件名称触发条件用途
line输入流接收到换行符(如回车键)时触发处理单行数据(如解析内容、执行逻辑)‌
close接口关闭时触发(调用 rl.close() 后)执行清理操作(如释放资源、结束进程)
pause输入流暂停时触发处理暂停状态(如缓冲控制)
resume输入流恢复时触发处理恢复后的逻辑
prompt在终端中显示提示符接收用户输入
SIGINT用户按下 Ctrl+C 时触发自定义中断行为(如安全退出)
http://www.yayakq.cn/news/830488/

相关文章:

  • 大型网站一般用什么语言做的长春seo网站管理
  • 网站建设亮点如何注册成立家族公司
  • 网站模板 div网站开发参考书籍
  • 邓亚萍做的网站中山一站式营销推广平台
  • 长安做外贸网站网上有做衣服的网站
  • 电镀加工技术支持 东莞网站建设绿色系的网站
  • 免费建设网站申请网站建设与管理试题 答案
  • 网站建设企业模板下载wordpress在线教育插件
  • asp网站免费完整源码网站开发的技术有
  • 邵阳网站建设wordpress主题设置选项
  • 如何做优秀的视频网站设计西安专业网站建设
  • 零成本游戏网站开发企业标识
  • 有一套源码做网站还差什么国家工商网企业查询官网
  • 上海网站建设多少费用搜h网站技巧
  • 网站开发者 地图网站前台功能
  • 上海网站建设哪里好网站icp备案地
  • 卫计局本年度网站建设工作总结竞价推广招聘
  • 犀牛云网站建设网站漂浮窗口代码
  • 做网站用小图标在什么网下载做性视频网站有哪些
  • wordpress企业网站开发网站开发跟软件开发
  • 请问如何做网站一级做爰片a视频网站试看
  • 网站开发遇到的问题及解决方法python做的网站源码
  • 利用社交网站做淘宝客wordpress502错误
  • 网站后台传照片 c windows temp 拒绝访问网站天下
  • 网站内链规划北京一度网站建设
  • 贸易网站设计机器人学做玩 网站
  • 宁波网站建设设计公司信息永久免费空间
  • 网站设计策略什么网站有设计视频
  • 重庆网站建开发找人做网站 自己购买服务器
  • 郴州网站建设有限公司字节跳动员工人数多少