回答編集履歴
2
Promise流儀のエラーハンドリングに変更
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
.catch(() => requestPromise.put(options))
|
34
34
|
|
35
|
-
.catch(e =>
|
35
|
+
.catch(e => Promise.reject(new Error("データ更新に失敗しました。 ErrorMessage : " + e.message)));
|
36
36
|
|
37
37
|
```
|
38
38
|
|
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
`.then`や`.catch`の戻り値でPromiseがネストしている場合、
|
46
46
|
|
47
|
-
それらを自動的に全て取り除いて値の状態にしてくれます。
|
47
|
+
それらを自動suna的に全て取り除いて値の状態にしてくれます。
|
48
48
|
|
49
49
|
|
50
50
|
|
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
}
|
86
86
|
|
87
|
-
putReq.catch(e =>
|
87
|
+
putReq.catch(e => Promise.reject(new Error("データ更新に失敗しました。 ErrorMessage : " + e.message)));
|
88
88
|
|
89
89
|
var resp = await putReq;
|
90
90
|
|
@@ -110,7 +110,7 @@
|
|
110
110
|
|
111
111
|
).catch(e =>
|
112
112
|
|
113
|
-
|
113
|
+
Promise.reject(new Error("データ更新に失敗しました。 ErrorMessage : " + e.message))
|
114
114
|
|
115
115
|
);
|
116
116
|
|
@@ -122,46 +122,42 @@
|
|
122
122
|
|
123
123
|
|
124
124
|
|
125
|
-
【おまけ】
|
125
|
+
【おまけ】 素直にasync/await構文で頑張る
|
126
126
|
|
127
127
|
|
128
128
|
|
129
|
-
await
|
129
|
+
async/await構文を使ってコードを書くとこんな感じになりますね。
|
130
130
|
|
131
|
-
外で包んだtry-catchで取得出来ます。
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
Promiseの糖衣構文という制約上、catchを握りつぶすのでちょっとお行儀が悪いですね。
|
136
|
-
|
137
|
-
ちょっと不安……
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
async/await構文を使っていくなら
|
142
|
-
|
143
|
-
こっちの方が良いでしょう。
|
144
132
|
|
145
133
|
|
146
134
|
|
147
135
|
```js
|
148
136
|
|
149
|
-
|
137
|
+
var resp = null;
|
150
138
|
|
151
|
-
|
139
|
+
for (let i = 0; i < 4; i++) {
|
152
140
|
|
153
|
-
|
141
|
+
try {
|
154
142
|
|
155
|
-
|
143
|
+
resp = await requestPromise.put(options);
|
156
144
|
|
157
|
-
|
145
|
+
break;
|
158
146
|
|
159
|
-
//
|
147
|
+
} catch (e) {} // お行儀が悪いがエラーは握りつぶす
|
160
148
|
|
149
|
+
}
|
150
|
+
|
161
|
-
|
151
|
+
if (resp == null) {
|
162
152
|
|
163
153
|
throw new Error("データ更新に失敗しました。 ErrorMessage : " + e.message)
|
164
154
|
|
165
155
|
}
|
166
156
|
|
167
157
|
```
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
やはり`.cache`メソッドをぶら下げながら、
|
162
|
+
|
163
|
+
ある程度の所まではPromiseで引っ張った方が綺麗に書けるでしょうね。
|
1
おまけ追加
test
CHANGED
@@ -115,3 +115,53 @@
|
|
115
115
|
);
|
116
116
|
|
117
117
|
```
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
---
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
【おまけ】 エラーの書き方それでよかったっけ?
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
awaitが待ったPromiseがPromise.reject終わりになる場合、
|
130
|
+
|
131
|
+
外で包んだtry-catchで取得出来ます。
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
挙動の統一ということで解答欄はあのような記述にしましたが、ちゃんと動作するんでしょうかね?
|
136
|
+
|
137
|
+
ちょっと不安……
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
async/await構文を使っていくなら
|
142
|
+
|
143
|
+
こっちの方が良いでしょう。
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
```js
|
148
|
+
|
149
|
+
try {
|
150
|
+
|
151
|
+
var resp = await requestPromise.put(options)
|
152
|
+
|
153
|
+
.catch(() => requestPromise.put(options))
|
154
|
+
|
155
|
+
.catch(() => requestPromise.put(options))
|
156
|
+
|
157
|
+
.catch(() => requestPromise.put(options));
|
158
|
+
|
159
|
+
// 後続処理
|
160
|
+
|
161
|
+
} catch (e) {
|
162
|
+
|
163
|
+
throw new Error("データ更新に失敗しました。 ErrorMessage : " + e.message)
|
164
|
+
|
165
|
+
}
|
166
|
+
|
167
|
+
```
|