⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

流的高级背压:构建自定义可写流与转换流的水位线控制

深入 stream 内部状态,实现自己的 highWaterMark 逻辑,以及基于背压的速率限制器。 · 难度:入门 · +10XP

自定义背压与水位线

Node.js 流通过 highWaterMark 控制内部缓冲区大小。自定义 Writable 的 _write 可以通过 callback 控制写入速度,Transform 则可以在 _transform 中暂停/恢复。本教程将构建一个“限速转换流”,它只允许每秒固定字节通过,利用 write 返回 false 时暂停上游 readable,并设置定时器恢复。

const { Transform } = require('stream');
class Throttle extends Transform {
  constructor(rate) {
    super();
    this.rate = rate;
    this.lastTime = 0;
  }
  _transform(chunk, encoding, callback) {
    const now = Date.now();
    const wait = this.lastTime + 1000/this.rate - now;
    if (wait > 0) {
      setTimeout(() => {
        this.lastTime = Date.now();
        callback(null, chunk);
      }, wait);
    } else {
      this.lastTime = now;
      callback(null, chunk);
    }
  }
}
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0