RxJs合并映射中的读卡器monad



我正在使用rxjs,并希望使用fp-ts包中的Readermonad作为依赖注入解决方案。

这是我的代码:

import { of } from 'rxjs';
import { pipe } from 'fp-ts/function';
import { mergeMap } from 'rxjs/operators';
import * as R from 'fp-ts-rxjs/ReaderObservable';
type Dependency = { dep1: string }
const fn1 = (input: string): R.ReaderObservable<Dependency, string> => (dep: Dependency) =>
of(`${input} | ${dep.dep1}`);
const fn2 = () => pipe(
of('initial').pipe(
mergeMap(x => pipe(
fn1(`| inside merge map ${x}`),
)),
),
);
fn2()({dep1: "something"}).subscribe(
data => console.log(data),
);

fn1函数具有使用Readermonad 注入的依赖项

问题是,当我在mergeMap中使用此函数时,返回值是ReaderObservable而不是Observable,这会导致错误。

如何在mergeMap中使用ReaderObservable

它不起作用,因为mergeMap的回调必须返回ObservableObservableInput:

type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T>;

但是ReaderObservable是一个返回Observable的函数。

任何期望Observable | ObservableInput的东西都不能在没有使用依赖项实际调用它的情况下使用它。


那么你该如何使用它呢?那么,你的依赖关系实际会在什么时候被注入呢?您的代码示例没有显示实际的注入点。至少,依赖项必须在mergeMap回调的范围内,这样才能将ReaderObservable转换为实际的Observable

相关内容

  • 没有找到相关文章

最新更新