Streams API是一种与浏览器中可能无限的数据流进行交互的好方法。 ReadableStreams
特别为您提供了表示潜在无限数据源的方法; “处理”是逐块完成的。
WritableStreams
是该概念的双重含义-表示可以消耗无限数据块的 sink 。此外,还有一个附加的undocumented on MDN概念称为TransformStream
。这只是两者的组合-代表数据的逐块转换。
我的问题很简单-当Chrome甚至IE edge支持Firefox时,为什么不放弃实现WritableStream API?是否有不执行该命令的特定哲学原因?特别是,我发现流的ByteStream
变体(在规范apparently中尚未充实)。
答案 0 :(得分:0)
没有哲学上的原因,我认为只是一个务实的原因。与在 fetch response API 中使用的 ReadableStream 不同,没有标准的 Web API 使用 WritableStream 模式(以它自己的 new WritableStream()
构造函数为模,它现在主要用作 JS 通过管道读取流的工具)。
这在两个方面很重要。第一个是优先考虑资源(欢迎补丁!)
第二个是实现使用 WritableStream 模式的浏览器 API 有助于确保该模式的良好实现,该模式仍然相对较新。字节流尤其需要高性能。
正在跟踪 Firefox 中对 WritableStream 的支持 here。
一些新的基于 WritableStream 的 Web API 正在 W3C 中标准化,并且可能会改变 Firefox 中的情况。但它们仍处于早期阶段。其中两个是:
Chrome 和 Edge 在首选项后面有 WebTransport 的实验性实现,这可能与它们早期支持 WritableStream 相关。