やりたいこと
axiosで複数リクエストを並列で発行する場合、それぞれに対してtry-catchをかけて例外が発生したリクエストの結果のみをundefined
として扱いたいです。
こちらの記事を参考に以下のように並列リクエストを記述するとします。
ts
1async function sample() { 2 3 // とりあえず、リクエストだけは一括で投げておいて... 4 const axiosA = axios.get("./a"); 5 const axiosA = axios.get("./b"); 6 const axiosC = axios.get("./c"); 7 8 // awaitするのは、レスポンスの受け取りのみにする。 9 // これなら、どれが一番時間がかかっても、待ち時間はMAX(A, B, C)になる 10 const a = (await axiosA).data; 11 const b = (await axiosB).data; 12 const c = (await axiosC).data; 13 14 return [a, b, c] 15 16}
この時以下のようにtry-catchをかけてしまうと、a〜cのどれか一つでもリクエスト失敗してしまうと返却値が空配列[]
になってしまいます。
ts
1async function sample() { 2 try { 3 const axiosA = axios.get('./a') 4 const axiosA = axios.get('./b') 5 const axiosC = axios.get('./c') 6 7 const a = (await axiosA).data 8 const b = (await axiosB).data 9 const c = (await axiosC).data 10 11 return [a, b, c] 12 } catch (error) { 13 return [] 14 } 15}
そうではなく、例えばcだけ失敗した場合はaとbだけは取得結果を返したいです。
この場合、[a, b, undefined]
が返るイメージです。
どのように記述すれば実現できるでしょうか。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/20 02:54
2021/09/20 02:55
2021/09/20 03:02