我需要创建一个函数,该函数可以检测过滤管道运算符从可观察流(热或冷)中排除了哪些值。操作员可以是this list中的任何一个(例如:debounce,throttle,filter,...)。
请注意,我希望运算符以任何方式转换 not 值,只是在输出中包含或排除。
我在打字稿中的函数签名可能如下所示:
function applyFilter<T>(
source: Observable<T>,
operator: (source: Observable<T>) => Observable<T>,
ejectedValues: Observer<T>
): Observable<T> {
// ...
}
使用场景如下所示:
let source = Rx.Observable.from([1, 2, 3, 4, 5]);
let observer = Rx.Subject<int>();
let output = applyFilter<T>(source, filter((x) => x % 2 === 0), observer);
在这种情况下,output
会发出2 , 4
而observer
会发出1, 3, 5
。
PS。请注意,这也需要适用于热观察。