如何保持 RxJ 干燥

2023-12-20

DRY(不要重复自己)

假设我在我的应用程序中经常使用以下代码:

observable$.pipe(
  tap(value => console.log(value)),
  map(value => value * 5),
  ... more repeated stuff
)

假设值 5 在代码的某些部分不同,但其他所有内容都相同。我可以以某种方式对其进行功能化/做一些事情,使其可重复使用以避免复制粘贴问题吗?

我可以做这样的事情吗?

observable$.pipe(
  getReusedOperators(7), // this would pipe to all above operators using 7 instead of 5
  tap((value) => console.log('im not reused and my value is', value)),
  ....
)

这里最好的方法是什么?抱歉,我的问题不太好,但希望你能明白。


对于可管道运算符要记住的是,它们只是接受可观察值并返回可观察值的函数,因此您可以轻松创建可重用的运算符组合,如下所示:

function getReusedOperators(factor) {
  return source => source.pipe(
    tap(value => console.log(value)),
    map(value => value * factor),
  );
}

对于可重用组合未参数化的情况,您可以使用静态组合pipe功能。看我的组合运算符 https://blog.angularindepth.com/rxjs-combining-operators-397bad0628d0文章中的一些例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保持 RxJ 干燥 的相关文章

随机推荐

  • 派生的 Scala 案例类与基类具有相同的成员变量

    有更好的方法吗 scala gt case class A x Int defined class A scala gt case class B override val x Int y Int extends A x defined c
  • 如何仅解析特定对象而不反序列化整个 JSON 文件?

    我有一个巨大的 JSON 文件 数万个对象 gt 100 MB 文件 我正在尝试解析以提取特定对象 由于文件太大 我尝试仅反序列化我需要的特定部分 如果可能的话 而不必反序列化整个文件 应根据特定属性的值找到所述对象 arena id xx
  • 在 Android Studio 中搜索整个项目中出现的所有字符串

    我刚刚开始使用 Android Studio IntelliJ 现在我正在寻找该功能来查找项目中任何文件中字符串的出现情况 例如 我想找到所有包含字符串 的文件 getUuid 右上角的搜索没有给我正确的结果 并且我认为我无法在 编辑 gt
  • SQL CE 4 System.Transaction 支持

    有人问了类似的问题here https stackoverflow com questions 3401796 does sql ce 4 ctp support ambient transactions using system tran
  • Python 中的反向索引?

    我知道a 结束 开始 1 以相反的顺序对列表进行切片 例如 a range 20 print a 15 10 1 prints 15 11 print a 15 0 1 prints 15 1 但您无法到达第一个元素 示例中为 0 看来 1
  • 将 Eclipse 迁移到缺少 build.gradle 的 Android Studio

    正如许多人所建议的 我正在尝试从 Eclipse 切换到 Android Studio 遵循以下建议https developer android com sdk installing migrate html https develope
  • 如何在 VSIX 项目中的解决方案文件夹中获取项目

    您好 我在 Visual Studio 扩展内的自定义构建任务遇到问题 我需要识别我的自定义项目类型的项目 如果它们位于解决方案的根目录中 我可以很好地做到这一点 但是当它位于解决方案文件夹内时 就会出现问题 我可以将解决方案文件夹作为 E
  • “无法为未命名的组件创建方法”

    以下代码 在包中注册时 为我们提供了一个名为TParentComponent已登记在托盘中Test 但是 当您使用属性编辑器 在同一代码中提供 创建子对象时 IDE 会显示错误消息无法为未命名的组件创建方法 奇怪的是Child对象确实有一个
  • 那是什么('Z' - 'A')

    在Currency java 文件中有一行 private static final int A TO Z Z A 1 这是什么意思 我以前没有看到这个 A TO Z 的值是什么以及为什么它使用 Z 而不是数字 用这个表达你正在治疗char
  • 如何在每个记录器的基础上更改 Python 日志消息的格式?

    读完后文档关于logging http docs python org py3k library logging html module logging 我知道我可以使用这样的代码来执行简单的日志记录 import logging def
  • 如何从命令行停止/启动特定的 WebSphere 部署的 EAR?

    我正在将一个依赖项 jar 放入 WebSphere 应用程序服务器上的分解 EAR 中 我需要停止 启动 EAR 以使 WS 执行新代码 有没有办法从命令行执行此操作 尝试运行这样的东西 opt ibm websphere appserv
  • 用户注销时删除 HKEY_CURRENT_USER 值

    Windows 服务在下创建一个注册表值 用于 Excel 加载项 HKEY CURRENT USER每个登录用户的注册表项 通过调用ImpersonateLoggedOnUser http msdn microsoft com en us
  • JQuery 幻灯片切换超时

    我有简单的 html 页面
  • 位移位大型二进制文件?

    在 C 中对大量二进制数据进行位移位的最佳或推荐方法是什么 我有一个 200K 二进制文件 我想左移然后右移整个文件 如果您的操作系统可以支持它 请使用内存映射文件 然后做一点移位就会非常非常高效 请参阅此答案以获取更多信息 内存映射文件有
  • browserify external 与 except 之间有什么区别?

    我在用着browserify并试图让它跳过浪费时间包括或解析 jquery 和其他require less 文件我通过 CDN 加载 我应该使用bundle exclude jquery or bundle external jquery
  • Apple iOS 浏览器随机不会呈现动态加载的 HTML 对象

    我们遇到的问题仅在 iOS 浏览器 iOS 12 0 上明显 我们的 SPA 应用程序使用 HTML 对象标签通过 JavaScript 将小部件 HTML CSS JS 文件 加载到页面上 该问题是间歇性的 当页面加载时 某些小部件不会在
  • 在 AWS DynamoDB 上存储聊天日志?

    我正在考虑使用 AWS DynamoDB 构建一个聊天应用程序 该应用程序将支持一对一和群聊 我想为每个聊天创建一个表 其中每个发送的聊天文本行都有一条记录 DynamoDB 适合这种工作吗 我也在考虑合并两个表 但是 如果 假设 有 10
  • MongoDB 身份验证错误

    连接 Mongodb 时出现此错误 我不太确定这个错误是什么 使用 CompositeServerSelector Selectors ReadPreferenceServerSelector ReadPreference Mode Pri
  • 并排对齐 2 个 div

    我需要并排对齐 2 个 div 它们都位于没有设置高度的包装 div 内 我的问题是 当我分别使用 float left 和 float right 时 div 似乎不会 留在 包装器 div 内 我可以看出 因为包装器 div 与页面具有
  • 如何保持 RxJ 干燥

    DRY 不要重复自己 假设我在我的应用程序中经常使用以下代码 observable pipe tap value gt console log value map value gt value 5 more repeated stuff 假