回答編集履歴
3
期待通りに動作しない try 文のコードを削除
answer
CHANGED
@@ -16,22 +16,9 @@
|
|
16
16
|
|
17
17
|
reject と比較して無駄が多いので、お勧めはしません。
|
18
18
|
|
19
|
-
```JavaScript
|
20
|
-
new Promise((resolve, reject) => {
|
21
|
-
try {
|
22
|
-
setTimeout(() => {
|
23
|
-
|
19
|
+
**(2018/09/16 23:03 編集)**
|
24
|
-
}, 100);
|
25
|
-
} catch (error) {
|
26
|
-
throw error;
|
27
|
-
}
|
28
|
-
|
20
|
+
当初、try 文のコードを2つ記載していましたが、一つは期待通りの動作ではない事が発覚した為、削除しました(R.Mizukamiさん、ご指摘ありがとうございます)。
|
29
|
-
console.log(error);
|
30
|
-
});
|
31
|
-
```
|
32
21
|
|
33
|
-
`setTimeout()` のコールバック関数内で `try-catch` を使う方法もあります。
|
34
|
-
|
35
22
|
```JavaScript
|
36
23
|
new Promise((resolve, reject) => {
|
37
24
|
setTimeout(() => {
|
@@ -46,7 +33,7 @@
|
|
46
33
|
});
|
47
34
|
```
|
48
35
|
|
49
|
-
|
36
|
+
しかし、自身で `throw` したエラーを `catch` するのは回りくどく、筋が良いとはいえません。
|
50
37
|
強制終了を意図しているのなら、`return` 文が適切でしょう。
|
51
38
|
|
52
39
|
```JavaScript
|
2
try 文(2nd)
answer
CHANGED
@@ -30,6 +30,29 @@
|
|
30
30
|
});
|
31
31
|
```
|
32
32
|
|
33
|
+
`setTimeout()` のコールバック関数内で `try-catch` を使う方法もあります。
|
34
|
+
|
35
|
+
```JavaScript
|
36
|
+
new Promise((resolve, reject) => {
|
37
|
+
setTimeout(() => {
|
38
|
+
try {
|
39
|
+
throw new Error("例外テスト");
|
40
|
+
} catch (error) {
|
41
|
+
reject(error);
|
42
|
+
}
|
43
|
+
}, 100);
|
44
|
+
}).catch(error => {
|
45
|
+
console.log(error);
|
46
|
+
});
|
47
|
+
```
|
48
|
+
|
49
|
+
いずれにしても、自身で `throw` したエラーを `catch` するのは回りくどく、筋が良いとはいえません。
|
50
|
+
強制終了を意図しているのなら、`return` 文が適切でしょう。
|
51
|
+
|
52
|
+
```JavaScript
|
53
|
+
return reject(new Error);
|
54
|
+
```
|
55
|
+
|
33
56
|
### await 式
|
34
57
|
|
35
58
|
> ```JavaScript
|
1
try 文
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
###
|
1
|
+
### reject
|
2
2
|
|
3
3
|
Promise の基本的な使い方を、下記リンク先を読んで学ぶ事をお勧めします。
|
4
4
|
|
@@ -12,8 +12,26 @@
|
|
12
12
|
});
|
13
13
|
```
|
14
14
|
|
15
|
-
###
|
15
|
+
### try 文
|
16
16
|
|
17
|
+
reject と比較して無駄が多いので、お勧めはしません。
|
18
|
+
|
19
|
+
```JavaScript
|
20
|
+
new Promise((resolve, reject) => {
|
21
|
+
try {
|
22
|
+
setTimeout(() => {
|
23
|
+
throw new Error("例外テスト");
|
24
|
+
}, 100);
|
25
|
+
} catch (error) {
|
26
|
+
throw error;
|
27
|
+
}
|
28
|
+
}).catch(error => {
|
29
|
+
console.log(error);
|
30
|
+
});
|
31
|
+
```
|
32
|
+
|
33
|
+
### await 式
|
34
|
+
|
17
35
|
> ```JavaScript
|
18
36
|
> await new Promise(() => { // SyntaxError: await is only valid in async function
|
19
37
|
> ```
|