fetch
specification可読ストリームBody
が最初false
に設定され、その後、任意の解析方法の呼び出しでtrue
に設定されているBody.bodyUsed
フラグが含まれていることを述べています。ここでボディオブジェクトをフェッチするのはなぜ1回だけ可能ですか?
は例です:
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
多くを読み取ることが可能です - https://で開発.mozilla.org/ja-JP/docs/Web/API/Response/clone –ボディは 'res'オブジェクトに格納する必要があります。 – Barmar
@ JaromandaXはい、それは次の論理的な質問に答えることができません。なぜそれを最初に制限し、代わりに 'clone()'を実装するのですか? –