Grapeoff
@Grapeoff
В чём концепция...?

Как сделать возврат последнего успешного значения и retry вместе с delay в случае ошибки?

С RxJS никогда не работал, но вдруг встала такая задача: вернуть последнее успешное значение или повторить попытку после определённого delay. Причём попыток ограниченное количество.

lastValueFrom(from(mongoose.createConnection(uri, mongooseConnectOptions).asPromise())
    .pipe(...)
)
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Как-то так (не проверял):
interface CreateConnectionOptions extends ConnectOptions {
  retryCount?: number;
  retryDelay?: number;
}

function createConnection(uri: string, {
  retryCount = 6,
  retryDelay = 1000,
  ...mongooseConnectOptions
}: CreateConnectionOptions = {}): Observable<Connection> {
  let connection$ = defer(() => mongoose.createConnection(uri, mongooseConnectOptions).asPromise());
  
  if (retryCount > 0) {
    connection$ = connection$.pipe(retry({
      count: retryCount,
      delay: retryDelay
    }));
  }
  
  return connection$.pipe(shareReplay(1));
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы