回答編集履歴
3
追記
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
追記
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
備考
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
|
+
|