iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Rxjs TakeUntil 操作符内容梳理总结
  • 837
分享到

Rxjs TakeUntil 操作符内容梳理总结

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

TakeUntil 的官方文档对这个操作符的解释是: Emit values until provided observable emits. 即它可以被赋予另一个起锚定作用的 Ob

TakeUntil 的官方文档对这个操作符的解释是:

Emit values until provided observable emits.

即它可以被赋予另一个起锚定作用的 Observable,当该锚定 Observable emit 值时,原始的 Observable 就停止发射值,进入 complete 操作。

看一个实际的例子:

import { interval, timer } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
//emit value every 1s
const source = interval(1000);
//after 5 seconds, emit value
const timer$ = timer(5000);
//when timer emits after 5s, complete source
const example = source.pipe(takeUntil(timer$));
//output: 0,1,2,3
const subscribe = example.subscribe(val => console.log(val));

source Observable 每个1秒的时间间隔,发射一个从 0 开始递增间隔为 1 的整数序列。

我们构造了一个 timer Observable,超时时间间隔为 5 秒,也就是说,在第五秒时,该 Observable 会发送一个值。这个 timer Observable 传入 takeUntil,作为一个 notification Observable,五秒钟之后,source Observable 就会停止发射整数。

最后上述程序执行的输出:4 秒之内打印 0~4,然后结束。

另一个例子:

const interval = interval(1000);
const clicks = fromEvent(document, 'click');
const result = interval.pipe(takeUntil(clicks));
result.subscribe(x => console.log(x));

这个例子里,interval 作为原始的 Observable,clicks 作为 notification Observable,整个程序的表现形式是,每个 1 秒有一个递增1的整数序列打印,直至页面发生点击事件时,原始 interval Observable 终止。

看另一个例子:

// RxJS v6+
import { interval } from 'rxjs/observable/interval';
import { takeUntil, filter, scan, map, withLatestFrom } from 'rxjs/operators';
//emit value every 1s
const source = interval(1000);
//is number even?
const isEven = val => val % 2 === 0;
//only allow values that are even
const evenSource = source.pipe(filter(isEven));
//keep a running total of the number of even numbers out
const evenNumberCount = evenSource.pipe(scan((acc, _) => acc + 1, 0));
//do not emit until 5 even numbers have been emitted
const fiveEvenNumbers = evenNumberCount.pipe(filter(val => val > 5));
const example = evenSource.pipe(
  //also give me the current even number count for display
  withLatestFrom(evenNumberCount),
  map(([val, count]) => `Even number (${count}) : ${val}`),
  //when five even numbers have been emitted, complete source observable
  takeUntil(fiveEvenNumbers)
);

const subscribe = example.subscribe(val => console.log(val));

我们逐行分析这个例子的逻辑:

const evenSource = source.pipe(filter(isEven));

产生一个每隔1秒发射一个偶数的 Observable.

const evenNumberCount = evenSource.pipe(scan((acc, _) => acc + 1, 0));

对产生的偶数的个数进行累加。

const fiveEvenNumbers = evenNumberCount.pipe(filter(val => val > 5));

当产生的偶数个数大于 5 时,发射值。这个 Observable 作为 takeUntil 的 notification Observable 使用。

const example = evenSource.pipe(
  //also give me the current even number count for display
  withLatestFrom(evenNumberCount),
  map(([val, count]) => `Even number (${count}) : ${val}`),
  //when five even numbers have been emitted, complete source observable
  takeUntil(fiveEvenNumbers)
);
  • 使用 eventSource 和 eventNumberCount,通过 withLatestFrom 将两个 Observable 进行连接,从而在 map Operator 里,可以同时打印出当前发射的偶数值和偶数总量。通过 takeUntil 传入一个只有在偶数总数个数大于 5 时才发射值的 Observable,可以做到偶数总数大于 5 之后,让 interval 停止值的发送。

最后的执行效果:

到此这篇关于Rxjs TakeUntil 操作符内容梳理总结的文章就介绍到这了,更多相关Rxjs TakeUntil 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Rxjs TakeUntil 操作符内容梳理总结

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Rxjs TakeUntil 操作符内容梳理总结
    TakeUntil 的官方文档对这个操作符的解释是: Emit values until provided observable emits. 即它可以被赋予另一个起锚定作用的 Ob...
    99+
    2024-04-02
  • Android内存优化操作方法梳理总结
    目录内存泄露非静态内部类创建静态实例注册对象未注销或资源对象未关闭类的静态变量引用耗费资源过多的实例Handler引发的内存泄露集合引发的内存泄露检测工具LeakCanaryAndr...
    99+
    2022-11-13
    Android内存优化方案 Android内存优化总结 Android内存优化
  • Vue 内置指令梳理总结
    目录指令总结v-textv-htmlv-cloakv-oncev-pre指令总结 v-bind:单向绑定解析表达式,可简写为 :xxxv-model:双向数据绑定v-for...
    99+
    2024-04-02
  • python中列表的常见操作梳理总结(二)
    目录python中列表的常见操作列表的索引与切片什么是索引?什么是切片?列表通过索引/切片赋值及索引的获取pop函数删除元素索引&切片在元组中的特殊性字符串的索引与切片字符串...
    99+
    2024-04-02
  • python中列表的常见操作梳理总结(一)
    目录python中列表的常见操作列表元组的简单操作列表/元组的长度列表/元组之间的累加与乘法判断列表/元组中是否包含某元素列表的append()函数列表的insert()函数列表的c...
    99+
    2024-04-02
  • PHP操作MySQL的常用代码段梳理与总结
    这篇文章为大家介绍,实用的PHP网站实际开发中常用到的操作mysql数据库的代码段,所有代码均可靠执行,此文将持续更新!!! 1、向数据库插入数据表 <?php ...
    99+
    2024-04-02
  • 梳理总结25个JavaScript数组操作方法实例
    目录1.删除数组重复项2. 获取数组的片段3.Array.from 达到 .map 的效果4.置空数组5. 将数组转换为对象6. 用数据填充数组7. 数组合并8.求两个数组的交集9....
    99+
    2024-04-02
  • Android 内存优化知识点梳理总结
    目录RAM 和 ROM常见内存问题内存溢出内存泄漏常见内存泄漏场景静态变量或单例持有对象非静态内部类的实例生命周期比外部类更长导致的内存泄漏Handler 导致的内存泄漏postDe...
    99+
    2024-04-02
  • Python 常用内置模块超详细梳理总结
    目录time模块time.sleep()time.time()time.localtime()time.strftime()datetime()random模块random.rand...
    99+
    2024-04-02
  • Python3字符串操作方法总结
    这篇文章主要讲解了“Python3字符串操作方法总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python3字符串操作方法总结”吧!1capitalize() 将字符串的第一个字符转换为...
    99+
    2023-06-04
  • C语言 超详细梳理总结动态内存管理
    目录一.为什么存在动态内存分配二.动态内存函数的介绍1.malloc和free2.calloc3.realloc三.常见的动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间...
    99+
    2024-04-02
  • python 字符串常用方法超详细梳理总结
    目录字符串是什么?字符串常用方法1.find()2.index()3.startswith()4.endswith()5.count()6.join()7.upper()8.lowe...
    99+
    2024-04-02
  • 梳理总结Java static关键字的方法作用
    目录概述定义和使用格式类变量静态方法调用格式静态原理图解静态代码块概述 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 ...
    99+
    2024-04-02
  • js不常见操作运算符总结
    目录2、逗号运算符3、javaScript空值合并操作符(??)4、javaScript可选链操作符( ?. )1、前言 js的运算符很多,之前有文章提过。例...
    99+
    2024-04-02
  • python常用字符串操作的总结
    本篇内容主要讲解“python常用字符串操作的总结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python常用字符串操作的总结”吧!1、字符串使用乘法运算符*做乘法运算的含义是复制。>&...
    99+
    2023-06-20
  • Expression操作运算符、表达式和操作方法总结
    一、Expression中的操作运算符 成员名称说明Add加法运算,如 a + b, ,不进行溢出检查,针对数值操作数。AddAssign加法复合赋值运算,如 (a += b), ,...
    99+
    2024-04-02
  • Angular搜索场景中如何使用rxjs的操作符处理
    这篇文章主要为大家展示了“Angular搜索场景中如何使用rxjs的操作符处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular搜索场景中如何使用rx...
    99+
    2024-04-02
  • js中不常见的运算符与操作符总结
    javaScript常用运算符和操作符总结 类别 ...
    99+
    2024-04-02
  • python中字符串的常见操作总结(二)
    目录字符串的编码格式什么是编码格式?常见的编码格式字符串格式化什么是字符串格式化?格式化字符串的使用场景第一种格式化方法—%第二种格式化方法–格式化函数for...
    99+
    2024-04-02
  • python中字符串的常见操作总结(一)
    目录前言python中的对象什么是对象?字符串的capitalize()函数capitalize()的功能capitalize()的用法字符串的小写内置函数字符串的upper()函数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作