この解答例は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が最大回数を超えるまで再帰的に実行されます。