この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
64. Promise rejectされるときに自動的に実行し直す
function fetchWithAutoRetry(fetcher, count) { return new Promise((resolve, reject) => { fetcher() .then(resolve) .catch((error) => { if (count <= 0) { reject(error); } else { fetchWithAutoRetry(fetcher, count - 1) .then(resolve) .catch(reject); } }); });}
上記のコードでは、fetcher()
を実行し、成功した場合はresolve
され、失敗した場合はcatch
されます。
失敗した場合にもしcount
が0以下なら最大retry回数を超えたので、そのままerror
をreject
します。
count
が0より大きい場合、fetchWithAutoRetry
関数を再帰的に呼び出して自動retryします。retry回数を1つ減らして実行し、再度成功したらresolve
され、失敗したら再度catch
されます。retryが最大回数を超えるまで再帰的に実行されます。