回答編集履歴
4
修正
answer
CHANGED
@@ -42,4 +42,10 @@
|
|
42
42
|
|
43
43
|
---
|
44
44
|
|
45
|
-
‘json()`が、JSONオブジェクトを直接返すメソッドではなく、Promiseを返すメソッドとなっていることのメリットは、JSON文字列のパース処理部分を(比較的簡単に)非同期処理として記述できる、という点だと思います。
|
45
|
+
~~‘json()`が、JSONオブジェクトを直接返すメソッドではなく、Promiseを返すメソッドとなっていることのメリットは、JSON文字列のパース処理部分を(比較的簡単に)非同期処理として記述できる、という点だと思います。~~
|
46
|
+
これは誤りでした。
|
47
|
+
|
48
|
+
hoshi-takanoriさんが質問へのコメントに記載のstacocerflow内のコメントによると
|
49
|
+
「res.json() は res.text().then(JSON.parse) のショートカットとのこと。
|
50
|
+
|
51
|
+
hoshi-takanoriさんコメントのように、、「fetch 自体はレスポンスヘッダーが返ってきた段階 (XHR の readyState = 2) で resolve するが、response.json はボディ全体が返る (XHR の readyState = 4) までは resolve しない」となっていることのようですね。
|
3
修正
answer
CHANGED
@@ -38,4 +38,8 @@
|
|
38
38
|
したがって、冒頭の質問に対する直接的な回答としては、
|
39
39
|
「Fetch APIは、fetch() で取得したPromiseを解決して一旦Responseオブジェクトを取得し、その取得したResponseオブジェクトに対して、様々な種類のPromiseを返すようなメソッドを持つ**設計**になっているから
|
40
40
|
(response.json()は、それらのうちの1つである)」
|
41
|
-
ということになります。
|
41
|
+
ということになります。
|
42
|
+
|
43
|
+
---
|
44
|
+
|
45
|
+
‘json()`が、JSONオブジェクトを直接返すメソッドではなく、Promiseを返すメソッドとなっていることのメリットは、JSON文字列のパース処理部分を(比較的簡単に)非同期処理として記述できる、という点だと思います。
|
2
answer
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
json()メソッドは、上記のうちの1つです。
|
32
32
|
|
33
|
-
「レスポンスの本文のテキストを JSON として解釈した結果で解決するPromiseを
|
33
|
+
「レスポンスの本文のテキストを JSON として解釈した結果で解決するPromiseを解決した結果を受け取る」場合、一例として下記のように書けば実現できます。
|
34
34
|
```
|
35
35
|
const json = await response.json();
|
36
36
|
```
|
1
answer
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
json()メソッドは、上記のうちの1つです。
|
32
32
|
|
33
|
-
「レスポンスの本文のテキストを JSON として解釈した結果で解決するPromiseを受け取る」場合、一例として下記のように書けば実現できます。
|
33
|
+
「レスポンスの本文のテキストを JSON として解釈した結果で解決するPromiseを受け取り、それを解決した結果を受け取る」場合、一例として下記のように書けば実現できます。
|
34
34
|
```
|
35
35
|
const json = await response.json();
|
36
36
|
```
|