RxJS可观测,从第一次发射开始发射先前和当前值

RxJS可观测,从第一次发射开始发射先前和当前值,rxjs,observable,Rxjs,Observable,我有一个定期发出JavaScript对象的程序。我想构造另一个可观测对象,它将发出基础可观测对象的先前值和当前值,以便比较两个对象并确定增量 or操作符看起来很合适,但它们只有在缓冲区被填满后才开始发射,但我要求这个可观测对象从底层可观测对象的第一个事件开始发射 subject.someBufferingOperator() .subscribe([previousValue, currentValue] => { /** Do something */ }

我有一个定期发出JavaScript对象的程序。我想构造另一个可观测对象,它将发出基础可观测对象的先前值和当前值,以便比较两个对象并确定增量

or操作符看起来很合适,但它们只有在缓冲区被填满后才开始发射,但我要求这个可观测对象从底层可观测对象的第一个事件开始发射

subject.someBufferingOperator()
    .subscribe([previousValue, currentValue] => {
        /** Do something */
    })
;
第一次发射时,
previousValue
可能只是
null


是否有一些内置运算符可用于实现所需的结果?

实际上,与运算符配对非常简单:

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

如果上一个或当前值为
null
但不是第一次发射,该怎么办。如何检测它?@FARID我相信你可以
startWith(新符号('First emission'))
如果你真的需要这样的决定论,或者只是使用一个标志。不幸的是,这不是一个非常友好的类型脚本解决方案。现在
previousValue
currentValue
都有
类型空
。有没有办法不将
null
添加到
currentValue
的类型中?@thorn’您始终可以手动将可观察对象强制转换为所需的类型,例如,
作为可观察的