Ответы пользователя по тегу Reactive Extensions
  • Как происходит отписка через takeUntil?

    @dmitrygavrish
    1) Правильно ли я понимаю, что первая строчка передаёт в Subject пустое значение(но всё же значение) и это заставляет Subject излучить хоть что-то?

    Все верно. В коде указан тип
    private ngUnsubscribe: Subject<void> = new Subject<void>();
    , cледовательно ничего кроме "пустого" значения передать в .next() компилятор тайпскрипта и не разрешит.

    2) А по поводу this.ngUnsubscribe.complete();

    The Observer callback to receive a valueless notification of type complete from the Observable. Notifies the Observer that the Observable has finished sending push-based notifications.

    Т.е., судя по всему, никто больше слушать данную последовательность не будет/не сможет после вызова данного метода
    Ответ написан
  • Как выводить результат оператора do после основного действия?

    @dmitrygavrish
    Оператор do никак не влияет на последовательность, вы просто "вклиниваетесь" в нее, получаете ее текущие данные и можете запустить какие-либо side effects на основании этих данных (результат выполнения функции в do никак не влияет на данные, которые окажутся в следующем операторе, либо конечной подписке). На сам таймер вы подписаны после оператора do, поэтому сначала выполнятся действия в do, затем в subscribe.

    Точно также любое действие выполнится в любом другом операторе до того, как вы попадете в subscribe, но другие операторы так или иначе меняют исходную последовательность.

    Чтобы добиться нужного вам поведения, можете записать последовательность в переменную и подписаться на нее 2 раза в нужном порядке:
    const obs = Observable.timer(0, 3000);
    obs.subscribe(i => console.log(i));
    obs.subscribe(i => console.log('tick', i));
    Ответ написан