Проверьте, если наблюдаемый в debounceTime () прогресс - PullRequest
0 голосов
/ 04 октября 2019

Как я могу выполнить .next() на Subject, только если он находится в процессе отладки?

let someFlag = true;
if (someFlag) {
    someFlag = false;
        if (this.resizeDebouncer !== null)) {
            this.resizeDebouncer = new Subject<Event>();
            this.resizeDebouncer.pipe(
                debounceTime(1000)
            ).subscribe(e => console.log(e.type));
        }

    }
this.resizeDebouncer.next(event); // should be executed only if resizeDebouncer subject in debouncing progress. 
// Don't execute if nothing is running

1 Ответ

0 голосов
/ 04 октября 2019

Я не нашел маркер для разбора в процессе. Ни .isClosed, ни .isStopped не подходит. Но я решил свою проблему, отписавшись от Subject каждый раз внутри подписки. В этом случае подписка существует только в диапазоне отклонения прогресса, а в остальное время .next() ничего не делает.

let subscription = this.resizeDebouncer
    .pipe(debounceTime(300))
    .subscribe(e => {
        subscription.unsubscribe();
        e => console.log(e.type);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...