У меня есть Observable, который испускает Either = Success | Failure
:
import { Observable } from 'rxjs';
type Success = { type: 'success' };
type Failure = { type: 'failure' };
type Either = Success | Failure;
const either$ = new Observable<Either>(observer => {
console.log('subscribe');
observer.next({ type: 'failure' });
observer.complete();
return () => {
console.log('unsubscribe');
};
});
Я хочу, чтобы пользователь мог «повторить» наблюдаемое, когда «Наблюдаемое» завершится, и последнее значение будет Failure
.
(Операторы retry{,When}
здесь не помогают, потому что они работают с ошибками на канале error
. По этой причине я считаю, что вместо этого мы должны думать в терминах repeat
.)
Я хочу:
- Повторяйте Наблюдаемое
n
раз, пока последнее значение не станет Failure
.
- Затем разрешите пользователю повторить вручную. Когда изменится наблюдаемое уведомление о повторных событиях (
repeat$
), повторите наблюдаемое снова.
Например:
// subscribe
// next { type: 'failure' }
// unsubscribe
// retry 2 times:
// subscribe
// next { type: 'failure' }
// unsubscribe
// subscribe
// next { type: 'failure' }
// unsubscribe
// now, wait for repeat notifications…
// on retry notification:
// subscribe
// next { type: 'failure' }
// unsubscribe