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