We deserve a better streams API for JavaScript
3 months ago
- #javascript
- #streaming
- #performance
- WHATWG流标准(Web流)旨在为浏览器和服务器提供统一的数据流处理API
- 由于十年前的设计决策,Web流存在基础易用性和性能问题,与现代JavaScript实践不匹配
- 提出了一种利用异步迭代等JavaScript语言特性的替代方案,其性能可达Web流的2至120倍
- Web流的关键问题包括:常规操作过于繁琐、锁定模型复杂、BYOB(自带缓冲区)读取鲜有成效、背压机制存在缺陷
- 替代方案简化了流的创建与消费流程,消除了不必要的锁定机制,并提供了明确的背压策略
- 引入拉取语义确保转换操作仅在消费数据时执行,从而提升效率并降低内存占用
- 新API同时支持同步和异步处理,当所有组件同步时可实现零开销的同步管道
- 明确支持多消费者模式,避免了Web流tee()方法隐含的缓冲问题
- 基准测试显示替代方案性能显著提升,尤其在链式转换和高频小数据块场景中
- 该提案旨在启动关于改进流式API的讨论,解决Web流在实际应用中的痛点