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

网站建设类论文格式网站制作网站建设需要多少钱

网站建设类论文格式,网站制作网站建设需要多少钱,南宁网站开发培训,wordpress底部悬浮导航文章目录 Node IO操作概述流的基本类型可读流读取模式可读流状态创建可读流使用可读流暂停和恢复绑定可写流 可写流创建可写流使用可写流关闭流缓冲数据 可读可写流转换流 Node IO操作 概述 在 Node.js 中,I/O(输入/输出)操作是异步的&…

文章目录

  • Node IO操作
    • 概述
    • 流的基本类型
    • 可读流
      • 读取模式
      • 可读流状态
      • 创建可读流
      • 使用可读流
      • 暂停和恢复
      • 绑定可写流
    • 可写流
      • 创建可写流
      • 使用可写流
      • 关闭流
      • 缓冲数据
    • 可读可写流
    • 转换流

Node IO操作

概述

在 Node.js 中,I/O(输入/输出)操作是异步的,这意味着它们不会阻塞主线程,允许其他代码继续执行。Node.js 提供了多种处理 I/O 操作的方式,包括文件系统操作、网络请求、数据库查询等。

Node.js 中的流是处理 I/O 操作的一种高效方式,特别是当处理大量数据时。流可以分为可读流、可写流、双工流和转换流。

流的基本类型

  • Readable:可读流
  • Writable:可写流
  • Duplex:双工流,可读可写流
  • Transform:转换流

可读流

读取模式

可读流有2种读取模式:

  • flowing:流动模式
  • paused:暂停模式

可读流状态

可读流有3种状态:

  • null:初始状态
  • true:流动状态
  • false:非流动状态

创建可读流

// 使用stream模块
const stream = require("stream");
const readable = new stream.Readable();// 使用fs模块
const fs = require("fs");
const read = fs.createReadStream("file.txt");

使用可读流

  • setEncoding():设置编码格式。
  • pause():暂停流。
  • resume():恢复流。
  • ispaused():是否暂停。
  • destroy():销毁流。
  • pipe():绑定可写流。
  • unpipe():解绑可写流。
  • on():监听事件
    • data:当流中有数据可读时触发。
    • end:当流中没有数据时触发。
    • error:当流发生错误时触发。
    • close:当流火底层资源关闭时触发。
const fs = require("fs");fs.createReadStream("file.txt").on("data", chunk => {console.log("读取数据:", chunk.toString());});

暂停和恢复

const fs = require("fs");const read = fs.createReadStream("file.txt");
read.setEncoding("utf8");
read.on("data", chunk => {console.log("读取数据:", chunk.toString());read.pause();setTimeout(() => {read.resume();}, 1000);
});
read.on("close", chunk => {console.log("读取完毕");
});

绑定可写流

const fs = require("fs");const read = fs.createReadStream("file.txt");
read.pipe(fs.createWriteStream("file2.txt"));

可写流

创建可写流

// 使用stream模块
const stream = require("stream");
const writable=new stream.Writable({write: function (chunk, encoding, next,) {console.log(chunk.toString());next();}}
);// 使用fs模块
const fs = require("fs");
const writable = fs.createWriteStream("file.txt");

使用可写流

  • wirte():写入数据。
  • end():关闭流。
  • destroy():销毁流。
  • cork():将数据缓冲到内存。
  • uncork():将内存的数据输出到目标处。
  • on():监听事件
    • finish:当所有数据已成功写入底层系统时触发。
    • drain:当流的缓冲区已清空,可以继续写入数据时触发。
    • error:当写入时发生错误触发。
    • close:当流关闭时触发。
const fs = require("fs");const writable = fs.createWriteStream("file.txt");
writable.write("Hello World");

关闭流

const fs = require("fs");const writable = fs.createWriteStream("file.txt");
writable.write("Hello World");
// 结束写入
writable.end("写入完毕");
writable.on("close", () => {console.log("写入结束");
});

缓冲数据

  • cork():调用该方法后,所有写入的数据会被缓冲到内存中。
  • uncork():调用该方法后,被缓冲的数据一次性写入底层系统。
const stream = require('stream');const writable = new stream.Writable({write: function (chunk, encoding, next) {console.log(chunk.toString());next();}
});
writable.write('Hello!');
writable.write('World!');
writable.cork();
writable.write('ABC');
writable.write('EFG');
setTimeout(() => {writable.uncork();
}, 2000);

可读可写流

可读可写流(双工流) Duplex 可以实现流的可读和可写功能,即同时实现 Readable 和 Writable。

要创建一个 Duplex 流,通常需要继承 stream.Duplex 类,并实现 _read 和 _write 方法。

const stream = require('stream');class MyDuplex extends stream.Duplex {constructor(options) {super(options);this.data = [];}// 从缓冲区读取数据_read = function (size) {const chunk = this.data.length > 0 ? this.data.shift() : null; // 从缓存读取数据this.push(chunk); // 触发data事件};// 将数据写入缓冲区_write = function (chunk, encoding, callback) {this.data.push(chunk); // 写入操作callback(); // 通知写入操作完成};
}const duplex = new MyDuplex();
// 监听data事件,负责接收数据
duplex.on('data', chunk => {console.log("读取数据:", chunk.toString());
});
// 监听end事件,读取完毕后调用
duplex.on('end', () => {console.log("读取完毕");
});
// 监听finish事件,写入完毕后调用
duplex.on('finish', () => {console.log("写入完毕");
});
duplex.write("hello");
duplex.write("world");
duplex.end(); // 结束写入操作// 读取数据: hello
// 读取数据: world
// 写入完毕
// 读取完毕

转换流

Transform 流是 Node.js 中的一种特殊类型的 Duplex 流,它用于在数据流经时对数据进行转换。Transform 流继承自 Duplex 流,但它专门用于处理数据的转换操作,例如加密、压缩、数据格式转换等。

const stream = require('stream');class MyTransform extends stream.Transform {constructor(options) {super(options);}// 数据转换操作_transform(chunk, encoding, callback) {const result = chunk.toString().toUpperCase();this.push(result);callback();}
}const transform = new MyTransform();
transform.on("data", (chunk) => {console.log("接收数据", chunk.toString());
});
transform.write("hello");
transform.write("world");
transform.end();// 接收数据 HELLO
// 接收数据 WORLD
http://www.dtcms.com/wzjs/785339.html

相关文章:

  • 网站的动效怎么做的wordpress文章列表加广告
  • 湘潭网站建设 找磐石网络一流广告设计内容
  • 无证做音频网站违法吗wordpress经常卡顿
  • 怎么做电视台网站功能强大的wordpress
  • 什么网站做美式软装设计上海网站开发技术最好公司
  • 广告公司图片福州短视频seo公司
  • 网站开发遇到的最大困难抖抈app下载国际版
  • 南阳网站建设的公司dede 网站内页标题修改
  • 服装加工厂网站建设方案计划书看设计案例的有哪些网站
  • 网站建设-好发信息网网站建设教程纯正苏州久远网络
  • 制作网站题材如何判断网站是不是自适应
  • 网站编辑是做网页编辑吗wordpress301重定向
  • vps 需刷新几次才能打开网站wordpress!资源
  • 快速做网站套餐wordpress链接跳转错误
  • 在一起做网店的网站的怎么购买越影网站建设
  • 衡粘水佩网站建设手机搭建网站工具
  • 物流网站 源码在线短网址生成工具
  • 网页设计模板html代码字体大小seo排名赚能赚钱吗
  • 单产品网站建设上海装修公司电话
  • 站长之家源码重庆建设工程管理网
  • 网站开发移动端多少钱平潭建设局网站
  • 网站到底备案好不好国外设交网站开发客户的重要性
  • 个人网站空间申请广州微网站建设咨询
  • 手机购物网站怎么推广wordpress4.x
  • 做网站用什么好建设网站网络公司
  • 网站建设会遇到哪些难题淘宝联盟的网站怎么做
  • 大型网站为什么难做wordpress 开发 主题授权
  • php商城建站系统公司网站进不去qq空间
  • 朋友让帮忙做网站旅游网站建设风险分析
  • 昆山做网站的公司虞城做网站