fetch
specification指出可读流Body
包含Body.bodyUsed
标志,该标志初始设置为false
,然后通过调用任何解析方法将其设置为true
。为什么读取Body对象只能读取一次?
下面是一个例子:
fetch('/some/path', (res) => {
// res.body.bodyUsed === false
res.json();
// res.body.bodyUsed === true
});
如果你试图再次拨打像res.json()
或res.text()
的方法,则抛出异常。
问题是:为什么使用这种行为?为什么不允许根据需要多次解析可读的流?我没有发现此事的解释。
PS。在Chrome(也可能是其他浏览器)中,该标志可作为res.body.locked
访问。
阅读不止一次
Response.body
更'为什么这种行为是使用',因为它很容易让使用'Response.clone(多次使用)' - HTTPS://开发商.mozilla.org/zh-CN/docs/Web/API/Response/clone –它需要将主体存储在'res'对象中。 – Barmar
@JaromandaX是的,但是这并没有回答下一个逻辑问题:为什么要把它限制在第一位,而是实现'clone()'。 –