У меня есть следующий сценарий использования:
Существует служба, которая ставит в очередь задачи вычисления с определенным идентификатором.Я подключил наблюдаемое к запросу о статусе сервиса.Пока идентификатор находится в очереди, запрос возвращает true
(еще не рассчитано).Как только запрос равен false
, это означает, что задача была рассчитана.
Я ищу возможность для наблюдаемого излучать только тогда, когда возвращаемое значение равно false
.До сих пор я пробовал с .skipWhile
и .filter
, но не смог добиться желаемого поведения.
private calc = new Subject<T>();
calculate(id: number): Observable<T> {
this.calcService.searchID(id).filter((x: boolean) => x == false)
.subscribe((dat: boolean) => {
this.calc.next(T);
});
return this.calc.share();
}
или
calculate(id: number): Observable<T> {
this.calcService.searchID(id).skipWhile((x: boolean) => x == true)
.subscribe((dat: boolean) => {
this.calc.next(T);
});
return this.calc.share();
}
(извините за использование ==правда / ложь)
Надеюсь, кто-нибудь может дать мне подсказку.Я использую RxJS 6.
Редактировать: Извините, я что-то пропустил.this.calcService.searchID(id)
- это HTTP-запрос.И при каждом запросе возвращает логическое значение.Таким образом, я могу получить false
после 20 запросов или после 100. Это зависит от сервиса, насколько быстро выполняется расчет.Поэтому мне нужна возможность либо дождаться возвращения false
, либо повторить запрос до получения false
.
.