RxJS наблюдаемый, который излучает как предыдущее, так и текущее значение, начиная с первого выброса - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть BehaviorSubject , который периодически генерирует объекты JavaScript. Я хочу построить другую наблюдаемую, которая будет излучать как предыдущие, так и текущие значения базовой наблюдаемой, чтобы сравнить два объекта и определить дельту.

Операторы pairwise() или bufferCount(2, 1) выглядят хорошо, но они начинают излучать только после заполнения буфера, но я требую, чтобы это наблюдаемое начиналось с первое событие основной наблюдаемой.

subject.someBufferingOperator()
    .subscribe([previousValue, currentValue] => {
        /** Do something */
    })
;

При первом излучении previousValue может быть просто null.

Есть ли какие-нибудь встроенные операторы, которые я могу использовать для достижения желаемого результата?

1 Ответ

0 голосов
/ 27 апреля 2018

На самом деле это было так же просто, как спарить pairwise() с startWith() операторами:

subject
    .startWith(null) // emitting first empty value to fill-in the buffer
    .pairwise()
    .subscribe([previousValue, currentValue] => {
        if (null === previousValue) {
            console.log('Probably first emission...');
        }
    })
;
...