我想解析一个observable,但我不希望返回值替换管道中的前一个值.有异步tap()吗?我需要一个像a的运算符,switchMap但我想忽略返回.
of(1).pipe(switchMap(() => of(2))).subscribe(console.log); // expected: 1
Run Code Online (Sandbox Code Playgroud)
我可以创建一个自定义运算符,但确定rxjs中内置了一些内容.
我最终得到了这个自定义运算符.它就像点击但解析了observable(并且应该更新以支持promises).
export function switchTap<T, R>(next: (x: T) => Observable<R>): MonoTypeOperatorFunction<T>;
export function switchTap<R>(observable: Observable<R>): MonoTypeOperatorFunction<R>;
export function switchTap<T, R>(
arg: Observable<T> | ((x: T) => Observable<R>)
): MonoTypeOperatorFunction<T> {
const next: (x: any) => Observable<T | R> =
typeof arg === 'function' ? arg : (x: any): Observable<T> => arg;
return switchMap<T, T>(value => next(value).pipe(ignoreElements(), concat(of(value))));
}
Run Code Online (Sandbox Code Playgroud)
用法:
of(1).pipe(switchTap(of(2))).subscribe(console.log) // 1
Run Code Online (Sandbox Code Playgroud)
或具有功能:
of(1)
.pipe(
switchTap(value => {
console.log(value); // value: 1
return of(value + 1);
})
)
.subscribe(console.log); // 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |