返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScriptRxjsmergeMap的使用场合
  • 470
分享到

JavaScriptRxjsmergeMap的使用场合

2024-04-02 19:04:59 470人浏览 安东尼
摘要

注意: flatMap 是 mergeMap 的别名。如果一次只能激活一个内部订阅,请使用 switchMap.如果内部 observables 的发射和订阅顺序很重要,请使用 co

注意:

  • flatMap 是 mergeMap 的别名。
  • 如果一次只能激活一个内部订阅,请使用 switchMap.
  • 如果内部 observables 的发射和订阅顺序很重要,请使用 concatMap.

当需要展平内部 observable 但想要手动控制内部订阅的数量时,是 mergeMap 极佳的使用场合。

例如,当使用 switchMap 时,每个内部订阅在源发出时完成,即任意时间段只允许一个活动的内部订阅。相比之下,mergeMap 允许同时激活多个内部订阅。因此,mergeMap 最常见的用例之一是不应取消的请求,这些请求被认为是写入而不是读取。

一个典型的例子就是 SAP 电商云购物车里不同行项目的金额,可以并行地进行增减操作。

请注意,如果这些写入必须保持顺序,则 concatMap 是更好的选择。比如数据库的写操作。

由于 mergeMap 一次维护多个活动的内部订阅,因此可能会由于长期存在的内部订阅造成内存泄漏。一个基本的例子是,如果使用内部计时器或 dom 事件流映射到可观察对象。在这些情况下,如果仍然希望使用 mergeMap,一个好办法是利用另一个运算符来管理内部订阅的完成,比如考虑 take 或 takeUntil。当然还可以使用 concurrent 参数限制一次活动内部订阅的数量。

看一个例子:

import { fromEvent, of } from 'rxjs';
import { mergeMap, delay } from 'rxjs/operators';
// faking network request for save
const saveLocation = location => {
  return of(location).pipe(delay(500));
};
// streams
const click$ = fromEvent(document, 'click');

click$
  .pipe(
    mergeMap((e: MouseEvent) => {
      return saveLocation({
        x: e.clientX,
        y: e.clientY,
        timestamp: Date.now()
      });
    })
  )
  // Saved! {x: 98, y: 170, ...}
  .subscribe(r => console.log('Saved!', r));

saveLocation 是一个函数,它能把任何传入的输入参数,包裹成一个 Observable,并且这个 Observable 并不是立即 emit 数据,而是延迟 500 毫秒。

mergeMap 接收一个函数作为输入参数,这个函数的输入参数就是通过 pipe 链接 mergeMap 的 Observable 里包含的元素,即 MouseEvent;project 返回的数据类型是一个新的 Observable,包含了屏幕点击的 X 和 Y 坐标以及当前时间戳。

最后产生的输出: 

到此这篇关于javascript Rxjs mergeMap 的使用场合的文章就介绍到这了,更多相关JS Rxjs mergeMap 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScriptRxjsmergeMap的使用场合

本文链接: https://lsjlt.com/news/153170.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScriptRxjsmergeMap的使用场合
    注意: flatMap 是 mergeMap 的别名。如果一次只能激活一个内部订阅,请使用 switchMap.如果内部 observables 的发射和订阅顺序很重要,请使用 co...
    99+
    2024-04-02
  • java集合的使用场景有哪些
    Java集合框架提供了一组接口和类,用于存储和操作数据。以下是一些常见的Java集合使用场景:1. 存储和操作一组对象:Java集合...
    99+
    2023-08-30
    java
  • redis集合的使用场景有哪些
    唯一性:使用集合来存储唯一的元素,确保数据不重复。 标签系统:使用集合来存储标签信息,方便对数据进行分类和检索。 用户关...
    99+
    2024-04-09
    redis
  • OpenBSD适合哪些使用场景
    服务器环境:OpenBSD是一个稳定、安全且易于管理的操作系统,非常适合用于构建和管理服务器环境。 安全性要求较高的场景:O...
    99+
    2024-04-02
  • java集合框架的使用场景有哪些
    本篇内容介绍了“java集合框架的使用场景有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、集合框架的认识对于集合框架的认识,为了防止...
    99+
    2023-06-19
  • PHP 函数在不同场合的使用比较
    php 中的函数可用于执行各种任务,包括数组操作(array_merge()、array_filter())、字符串操作(strtoupper()、substr())、时间操作...
    99+
    2024-04-13
    函数 php
  • 适合使用Go语言的场景有哪些?
    适合使用Go语言的场景有哪些?——探索Go语言的应用领域及优势 Go 语言是一种由 Google 开发的开源编程语言,自发布以来备受开发者们的喜爱。它具有高效的性能、简洁的语法和强大的...
    99+
    2024-04-02
  • 各种Action的实用场合
    不同的Action类处理不同的用户请求,并不意味着一个Action类只能执行一个操作。在Action类中可以聚合多个操作。基本原则是一个Action与一个业务操作相关联。例如商品的增、删、改、查可以放到一个Action类中实现,而购物车功能...
    99+
    2023-06-03
  • ip代理适合哪些场景使用
    这篇文章主要介绍“ip代理适合哪些场景使用”,在日常操作中,相信很多人在ip代理适合哪些场景使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ip代理适合哪些场景使用”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-25
  • Aurora数据库适合哪些场景使用
    Aurora数据库适合以下场景使用: 高可用性要求:Aurora提供了自动故障检测和恢复功能,能够保证数据库的高可用性,适合对数据...
    99+
    2024-04-02
  • Cookie的使用场景
    Cookie是存在浏览器端的浏览器 第一次请求:浏览器端是没有cookie数据的 tomcat容器: (1)服务器端创建Cookie public Cookie(String name,String value) (2)设置cookie的过...
    99+
    2023-09-21
    服务器 运维
  • 香港服务器租用适合哪些场景使用
    香港服务器租用适合网络游戏、外贸、直销贸易等行业场景使用,这些行业场景对服务器的要求及高,而香港服务器具备了免备案、带宽充足、速度快、稳定性强、安全性高等优势,因此适合对服务器要求高的行业使用。具体内容如下:网络游戏行业许多海外游戏开发商在...
    99+
    2024-04-02
  • 轻量应用服务器适合哪些场景使用
    轻量应用服务器适合处理一些简单的应用场景,例如: 静态网站托管:轻量应用服务器可以用来托管简单的静态网站,如个人博客、简单的企业...
    99+
    2024-04-09
    轻量应用服务器 服务器
  • 裸金属服务器适合哪些场景使用
    裸金属服务器适合需要高性能、高可靠性和定制化配置的场景使用,例如: 大型数据库应用:裸金属服务器提供更高的性能和可靠性,适合处理...
    99+
    2024-04-09
    裸金属服务器 服务器
  • 有哪些场景适合使用数组转对象?
    数组转对象的概念是指将数组转换为对象,以提供一致的数据格式和高效的键值访问。适合使用场景:数据结构不规范时需要根据键值访问数据时需要进行复杂操作时实战案例:将购物清单数组转换为对象,使用...
    99+
    2024-04-28
    数组 对象 数组转对象 键值对
  • 尽量避免使用索引合并的场景问题解析
    目录引言1. 问题重现2. 索引合并2.1 Using intersect(...)2.2 Using union(...)2.3 Using sort_union(...)2.4 索引合并原理3. ...
    99+
    2023-05-15
    避免使用索引合并 避免索引合并场景
  • Cassandra适合哪些应用场景
    Cassandra适合以下应用场景: 大规模数据存储:Cassandra是一个高度可伸缩的分布式数据库系统,适合存储大规模的数据...
    99+
    2024-04-09
    Cassandra
  • Couchbase适合哪些类型的应用场景
    Couchbase适合以下类型的应用场景: 实时分析和数据处理:Couchbase具有高性能和可扩展性,能够处理大量实时数据,并...
    99+
    2024-04-09
    Couchbase
  • redis有哪些合适的场景
    Redis适用于以下场景:1. 缓存:Redis的高性能和低延迟使其成为一个优秀的缓存解决方案,可以将频繁读取的数据缓存在Redis...
    99+
    2023-09-04
    redis
  • python字典的使用场景
    这篇文章主要介绍“python字典的使用场景”,在日常操作中,相信很多人在python字典的使用场景问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python字典的使用场景”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作