为什么 fetch Body 对象只能读取一次?

Why fetch Body object can be read only once?

fetch specification 声明可读流 Body 包含 Body.bodyUsed 标志,该标志最初设置为 false 然后设置为 true 调用任何解析方法。

这是一个例子:

fetch('/some/path', (res) => {
    // res.body.bodyUsed === false
    res.json();
    // res.body.bodyUsed === true
});

如果您尝试再次调用 res.json()res.text() 之类的方法,则会抛出异常。

问题是:为什么要使用这种行为?为什么不允许根据需要多次解析该可读流?我没有找到任何解释。

PS。在 Chrome(可能还有其他浏览器)中,该标志可以作为 res.body.locked.

访问

The question is: why that behavior is used? Why not to allow parsing that readable stream as many times as one wants?

使用Response.clone()

可以多次读取Response.body