Нет, то, что вы спрашиваете, невозможно из-за того, что отфильтрованные уведомления никогда не будут переданы. Вам понадобится уведомление совершенно нового типа, которое не используется ни одним оператором, кроме того, который вы описали.
Теперь вот идея, которая, вероятно, не рекомендуется. Вы можете неправильно использовать уведомление error
, чтобы пропустить некоторые операторы, но это помешает любой другой обработке ошибок, так что это не то, что вы должны делать ...
const sub = interval(1000).pipe(
tap(a => console.log('starting', a)),
mergeMap(b => b % 100 === 0 ? of(b) : throwError(b)),
switchMap(c => dataService.update(c)),
catchError(b => of(b)),
tap(d => console.log('finishing', d))
)
Обратите внимание, что мы не используем filter
, а сопоставляем либо с next
, либо с error
уведомлением в зависимости от условий. Ошибки, естественно, будут игнорироваться большинством операторов и потребляться tap
, subscribe
или catchError
. Это способ поставить метку на предмет, чтобы работники знали, что им не следует прикасаться к ней (по аналогии с Инго)