怎样正确消费 Fetch 返回的 ReadableStream?
参考答案
响应的 body 可以是 ReadableStream,通过 reader.read 逐块获取 value 和 done,或在支持的环境中使用异步迭代。取得 reader 会锁定流,因此不能同时让另一消费者随意读取同一响应体。
网络分块不等于业务消息边界:一个 UTF-8 字符或一条 JSON 消息可能跨多个块。文本解码应使用支持流模式的解码器,消息协议还需要独立缓冲与分隔处理。把每块直接当成完整 JSON 解析通常是不可靠的。
不再需要数据时,应明确取消读取或相应请求,并释放读取器锁。复制或 tee 流也有缓冲成本。对于大数据,关注背压与消费速度,避免最终又把所有块无上限收集到内存中。