RxJS обнаруживает длительную подписку

1

В настоящее время я использую RxJS Observables/Subscription для выполнения HTTP-запросов, как показано на следующем примере:

this.waiting = true;
this.doSomething().subscribe(
      (result) => {
        this.waiting = false;
        this.showResult= true;
      }
);

То, что я действительно хочу сделать, устанавливается только для этого. Ожидание true в течение предопределенного промежутка времени. Другими словами, вы действительно "ожидаете", если Observable не вернется через 30 секунд. Удивление, как этого добиться. Я вижу, что есть доступный метод.timer, но после этого будет только подписываться?

Теги:
rxjs

2 ответа

3
Лучший ответ

Посмотрите на timeout() и timeoutWith() операторов. У них нет документации, но по их параметрам вы можете догадываться, что они делают.

Оператор timeout() отправляет уведомление error через некоторое время бездействия.

timeoutWith() Я думаю, что вы можете заменить источник Observable другим наблюдаемым после некоторого времени бездействия.

В конце концов, если вы хотите избежать этих двух операторов, вы можете использовать Observable.race который подписывается внутренне только на первое наблюдаемое, которое испускает:

Observable.race(Observable.timer(30 * 1000).take(1), this.doSomething())
0

Я не знаю оператора, который делает это, но этот код js должен делать

const source = Rx.Observable.of(1).delay(1000);
const sub = source.subscribe(val => console.log(val));
setTimeout(() => {
    sub.unsubscribe();
    console.log('timeout')
}, 500);

вы можете играть с задержкой и значением setTimeout.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню