この解答例は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回数を超えたので、そのままerrorrejectします。

countが0より大きい場合、fetchWithAutoRetry関数を再帰的に呼び出して自動retryします。retry回数を1つ減らして実行し、再度成功したらresolveされ、失敗したら再度catchされます。retryが最大回数を超えるまで再帰的に実行されます。