Мне нужно создать функцию, которая может определять, какие значения были исключены из наблюдаемого потока (горячего или холодного) оператором фильтрующей трубы. Оператор может быть любым из этого списка (например: debounce, throttle, filter, ...).
Обратите внимание, что я ожидал бы, что значения не будут каким-либо образом преобразованы оператором, просто включены или исключены из вывода.
Моя подпись функции в машинописи может выглядеть примерно так:
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. Обратите внимание, что это должно работать и для горячих наблюдаемых.