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()'。 –