回答編集履歴

4

訂正

2022/08/27 02:38

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- 間違って回答欄に書いてしまいました。今さら削除依頼するのも何なので回答として書き直しました。検証してないのでハズレだったらすみません。
1
+ 間違って回答欄に書いてしまいました。今さら削除依頼するのも何なので回答として書き直しました。 ~~検証してないのでハズレだったらすみません。~~ 検証しました。下の追記を見てください。
2
2
 
3
3
  エラーメッセージでググってヒットした最初の記事 (url 下記) によると、async /
4
4
  await をペアで使わないとそうなるそうです。

3

追記

2022/08/27 02:16

投稿

退会済みユーザー
test CHANGED
@@ -9,3 +9,54 @@
9
9
  質問のコードでは関数に async を付与したが、関数内では await を使ってないのが問題のようです。
10
10
 
11
11
  関数の内部で await を使うように関数内の構文を書き直すか、今のままのコードから async / await を削除したらどうなりますか?
12
+
13
+ ---
14
+
15
+ **【追記】**
16
+
17
+ 上に「関数の内部で await を使うように関数内の構文を書き直すか、今のままのコードから async / await を削除したらどうなりますか?」と書きましたが、それを検証してみました。
18
+
19
+ 以下のコードの getData() が「async / await を削除」、getData2() が「関数の内部で await を使うように関数内の構文を書き直す」です。
20
+
21
+ ```
22
+ <script type="text/javascript">
23
+ function getData() {
24
+ fetch("handler2.ashx", {
25
+ method: "POST"
26
+ })
27
+ .then(response => response.json())
28
+ .then(data => console.log(data))
29
+ }
30
+
31
+ async function getData2() {
32
+ const response = await fetch("handler2.ashx", { method: "POST" });
33
+ const data = await response.json();
34
+ console.log(data);
35
+ }
36
+
37
+ window.onload = async function () { getData(); await getData2(); }
38
+ </script>
39
+ ```
40
+
41
+ 例えば fetch で要求すると戻ってくる JSON 文字列が以下の場合、
42
+
43
+ ```
44
+ [
45
+ {
46
+ "id": 1,
47
+ "name": "aaa"
48
+ },
49
+ {
50
+ "id": 2,
51
+ "name": "bbb"
52
+ },
53
+ {
54
+ "id": 3,
55
+ "name": "ccc"
56
+ }
57
+ ]
58
+ ```
59
+
60
+ 上のスクリプトの実行結果は以下の画像のようになります。
61
+
62
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-27/29c2f6e0-7b24-4b1f-bf51-a68738f46640.jpeg)

2

訂正

2022/08/26 22:29

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- 間違って回答欄に書いてしまいました。
1
+ 間違って回答欄に書いてしまいました。今さら削除依頼するのも何なので回答として書き直しました。検証してないのでハズレだったらすみません。
2
2
 
3
3
  エラーメッセージでググってヒットした最初の記事 (url 下記) によると、async /
4
4
  await をペアで使わないとそうなるそうです。
@@ -7,3 +7,5 @@
7
7
  https://bobbyhadz.com/blog/node-await-is-only-valid-in-async-function#:~:text=The%20error%20%22await%20is%20only,directly%20enclosing%20function%20as%20async%20.
8
8
 
9
9
  質問のコードでは関数に async を付与したが、関数内では await を使ってないのが問題のようです。
10
+
11
+ 関数の内部で await を使うように関数内の構文を書き直すか、今のままのコードから async / await を削除したらどうなりますか?

1

訂正

2022/08/26 22:22

投稿

退会済みユーザー
test CHANGED
@@ -1 +1,9 @@
1
+ 間違って回答欄に書いてしまいました。
2
+
3
+ エラーメッセージでググってヒットした最初の記事 (url 下記) によると、async /
4
+ await をペアで使わないとそうなるそうです。
5
+
6
+ Fix - Await is only valid in async function Error in NodeJS
7
+ https://bobbyhadz.com/blog/node-await-is-only-valid-in-async-function#:~:text=The%20error%20%22await%20is%20only,directly%20enclosing%20function%20as%20async%20.
8
+
1
- 上の回答のコードは質問者さんのコードと同じ見えますけど? 「return してくださ」とはどいうことですか?
9
+ 質問のコードでは関数async を付与たが、関数内では await を使っのが問題のようです