系统性Node.js——手写文件流( 四 )
每行代码都有详细的注释 , 直接看代码应该都能理解 , 这里我再详细罗列下具体步骤 。
「解读:」
- 首先初始化要被写入的内容 , 只支持 buffer 跟 字符串 , 如果是字符串则直接转为 buffer 。
- 计算要被写入的总长度 , 即 this.writtenLen += chunk.length
- 判断是否已经超过 highWaterMark
- 判断是否需要触发 drain
- 判断是否已经有正在被写入的内容了 , 如果没有则调用 _write() 直接写入 , 如果有则放入缓存中 。 当 _write() 写入完毕后 , 调用 clearBuffer() 方法 , 从 this.cache 中取出最先被缓存的内容进行写入操作 。 clearBuffer 方法如下所示
clearBuffer() {// 取出缓存const data = http://kandian.youth.cn/index/this.cache.shift()if (data) {const { chunk, cb } = data// 继续进行写入操作this._write(chunk, () => {cb()this.clearBuffer()})return}// 触发 drainthis.needDrain--tt-darkmode-color: #595959;">文件可写流总结可写流要比可读流要稍微复杂一点 , 主要是要注意每次只能执行一次写入操作 , 剩下的要被缓存起来 , 所以就要有一系列的缓存控制方案 。 只要这块逻辑搞明白 , 其实跟可读流也差不多 。
最后「码字不易 , 如果觉得不错 , 就点赞/关注支持一下吧~~~」
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 三星发布Galaxy Chromebook 2 配备QLED显示屏和特殊手写笔支持
- 开会再也不用手写,微信打开这个设置,会议纪要一键生成
- “记”兴之作 智能手写本推荐——柔宇RoWrite 2
- 为中端机配备手写笔!摩托罗拉G Stylus 2021渲染图曝光
- S Pen手写笔支持将为Galaxy Z Fold 3带来质变
- 三星暗示Galaxy S21系列将在明年1月发布:支持手写笔
- Vivo折叠屏智能机新专利曝光 带有手写笔专用收纳槽
- 三星确认Galaxy S21等手机将支持手写笔 Note系列面临被抛弃命运
- 外媒分享带新款S Pen手写笔的Galaxy S21 Ultra概念渲染图
- Galaxy S21 Ultra的疑问:三星将如何权衡曲面屏与S Pen手写笔?