4

Streams API是一种与浏览器中潜在的无限数据流交互的好方法。ReadableStreams专门为您提供表示潜在无限数据的方法;其中“处理”是逐块完成的。

WritableStreams是这个概念的对偶 - 代表一个可以消耗潜在无限数据块的接收器此外,还有一个额外的(在 MDN 上未记录)概念称为 a TransformStream; 这只是两者的结合 - 表示数据的逐块转换。

我的问题很简单——当 Chrome 甚至 IE edge 都支持它时,为什么 Firefox 会放弃实现 WritableStream API?不实施它是否有特定的哲学原因?特别是流的变体(显然ByteStream在规范中没有完全充实)我觉得很可疑。

4

1 回答 1

0

没有哲学原因,我认为只是务实的原因。与读取响应API 中使用的ReadableStream不同,目前还没有标准的 Web API 使用WritableStream模式(取模它自己的构造函数,它现在主要用作 JS 通过管道读取流的工具)。new WritableStream()

这在两个方面很重要。首先是优先考虑资源(欢迎使用补丁!)

第二个是实现使用 WritableStream 模式的浏览器 API 有助于确保该模式的良好实现,这仍然是相对较新的。字节流尤其需要高性能。

在此处跟踪 Firefox 中对 WritableStream 的支持。

一些新的基于 WritableStream 的 Web API 正在 W3C 中进行标准化,并且可能会改变 Firefox 中的情况。但他们仍处于早期阶段。其中两个是:

  1. WebTransport API(在 WICG 中孵化了很长时间)。在此处跟踪 Firefox 支持。
  2. WebRTC 编码媒体RTCRtpScriptTransform流(又名“可插入流”)。

Chrome 和 Edge在 pref 后面有WebTransport的实验性实现,这可能与它们早期支持 WritableStream 有关。

于 2021-02-14T17:37:41.163 回答