首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RxJs mergeMap中的读卡器monad

RxJs mergeMap中的读卡器monad
EN

Stack Overflow用户
提问于 2021-04-25 02:28:02
回答 1查看 93关注 0票数 0

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

下面是我的代码:

代码语言:javascript
运行
复制
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函数具有使用Reader monad注入的依赖项

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

如何在mergeMap中使用ReaderObservable

EN

回答 1

Stack Overflow用户

发布于 2021-04-25 03:11:17

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

代码语言:javascript
运行
复制
type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T>;

但是ReaderObservable是一个返回Observablefunction

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

那么如何使用它呢?那么,在什么情况下,您的依赖项实际上将被注入?您的代码示例没有显示实际的注入点。至少,依赖项必须在mergeMap回调的作用域中,这样您才能将ReaderObservable转换为实际的Observable

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67246141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档