その MDN 記述に基づいて、 のようなRequest
機能が実装されています。ただし、これらの関数が実際に何をするのかはわかりません。彼らは何もしていないようです。Body
text()
私はこのようなコードを持っています
var r = new Request('http://google.com');
r.text().then(function(text) {
alert(JSON.stringify(text));
}, function(error) {
alert("error");
});
何が起こるかというと、Promise は空の文字列ですぐに解決され、リクエストは発生しません。開発ツール (またはwireshark) でネットワーク アクティビティを見ると、実際のリクエストは発生しません。しかし、エラーもありません。
何が起こっている?Body
APIの目的は何ですか?
MDN の説明では「応答ストリーム」について説明していますが、応答はありません (実際の取得がまだ行われていないため)。(編集:私は自分の質問に答えたので、MDNページも編集したので、今では意味があります。)
仕様には次のように記載されています。
Request オブジェクトのボディ消費アルゴリズムは、指定されたタイプで、次の手順を実行します。
この Request オブジェクトが妨害された場合、TypeError で拒否された新しい promise を返します。
妨害フラグを設定します。
p を新しい約束とする。
次のサブステップを並行して実行します。
bytes を空のバイト シーケンスとします。
リクエストのボディが null でない場合、ストリームの終わりを返すまで、バイトをリクエストのボディから読み取った結果に設定します。
バイト、タイプ、および MIME タイプでパッケージ データ アルゴリズムを実行した結果で p を解決します。それが例外をスローした場合、その例外で p を拒否します。
pを返します。
私はそれからあまり頭が良くありません。
(注: 私が求めているのは非常に詳細な質問であることはわかっています。/ / が一般的に何をするかについて尋ねているfetch
わけResponse
ではありませんRequest
。)