Во-первых, я хотел бы повторить попытку, используя простой счет:
- Повторить источник, наблюдаемый
n
раз.
- Затем выдать ошибку.
(Предпочтительно, ошибка может выдаваться сразу после каждой попытки, но retry(count)
, похоже, этого не делает.)
Если я правильно понимаю, это поведение retry(count)
:
{
new Rx.Observable(observer => {
console.log("subscribe");
observer.error("ERROR");
})
.retry(3)
.subscribe({
error: console.log
});
}
// subscribe
// subscribe
// subscribe
// subscribe
// ERROR
Затем я хотел бы разрешить пользователю повторить попытку вручную. Когда отправляется наблюдаемое уведомление о повторных попытках (retry$
), повторите попытку наблюдаемой снова, выдавая ошибку каждый раз после этого.
Я пытался использовать retryWhen
для этого, однако, хотя повторные попытки все же происходят, ошибка никогда не выдается.
Я хочу повторить попытку, но также выдать любые ошибки, чтобы я мог отображать их в пользовательском интерфейсе во время выполнения повторной попытки.
{
const retrySubject = new Rx.Subject();
const retry$ = retrySubject.asObservable();
new Rx.Observable(observer => {
console.log("subscribe");
observer.error("ERROR");
})
.retryWhen(() => retry$)
.subscribe({
error: console.log
});
retrySubject.next();
}
// subscribe
// subscribe
Кроме того, я не уверен, как объединить это с retry(count)
. Если я соединю операторы повтора, они будут вызывать друг друга.