回答編集履歴

3

追記

2022/08/27 04:35

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  以下は修正の一例です。
6
6
  ```javascript
7
- function f() {
7
+ function f() { // 追記2: async は不要
8
8
  return fetch("?action=toggle",{ // 1. fetch が返したPromiseを返すようにreturnを追加
9
9
  method: "POST",
10
10
  body: data

2

追記

2022/08/27 04:29

投稿

退会済みユーザー
test CHANGED
@@ -23,7 +23,19 @@
23
23
  })();
24
24
  ```
25
25
 
26
- ### 備考
26
+ ### 追記1
27
27
 
28
28
  - **SyntaxError: await is only valid in async functions and the top level bodies of modules** のエラーを解消するだけなら、上記の修正点の **2.** だけ修正することで当該のエラーは出なくなると思います。ただし**1.** の修正をしないと、`f()` は undefined で即時解決するPromiseを返すことになり、従って`const list = await f();` によって `list` にはundefinedが入ってしまうので、fetchで得たレスポンスを`list`に入れるという意図した結果は得られないです。
29
29
 
30
+ ### 追記2
31
+
32
+ お伝えし忘れた点が一点ありました。
33
+
34
+ 上記で回答した2点の修正のうち、 **1.** のほうの修正は、すでにコード例に書いたように `fetch()` の返したPromiseを `f()` に returnさせるようにしますが、これに加えて関数`f()`の宣言における `async` は不要になります。
35
+
36
+ 先のコード例でも `function f()` の前の `async` は下記のように削除しています。
37
+ ```diff
38
+ - async function f(){
39
+ + function f(){
40
+ ```
41
+

1

備考

2022/08/27 03:41

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,7 @@
23
23
  })();
24
24
  ```
25
25
 
26
+ ### 備考
27
+
28
+ - **SyntaxError: await is only valid in async functions and the top level bodies of modules** のエラーを解消するだけなら、上記の修正点の **2.** だけ修正することで当該のエラーは出なくなると思います。ただし**1.** の修正をしないと、`f()` は undefined で即時解決するPromiseを返すことになり、従って`const list = await f();` によって `list` にはundefinedが入ってしまうので、fetchで得たレスポンスを`list`に入れるという意図した結果は得られないです。
29
+