gpt4 book ai didi

rxjs - 忽略 switchMap 返回值

转载 作者:行者123 更新时间:2023-12-04 23:13:48 31 4
gpt4 key购买 nike

我想解析一个 observable,但我不希望返回值替换管道中的先前值。有没有异步tap() ?我需要一个像 switchMap 这样的运算符(operator)但我想忽略返回。

of(1).pipe(switchMap(() => of(2))).subscribe(console.log); // expected: 1

我可以创建一个自定义运算符,但确定 rxjs 中内置了一些东西。

最佳答案

我最终得到了这个自定义运算符。它就像 tap 但解决了 observables(并且应该更新以支持 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))));
}

用法:
of(1).pipe(switchTap(of(2))).subscribe(console.log) // 1

或使用函数:
of(1)
.pipe(
switchTap(value => {
console.log(value); // value: 1
return of(value + 1);
})
)
.subscribe(console.log); // 1

关于rxjs - 忽略 switchMap 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48938183/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com