rxjs 常用的管道操作符
do -> tap
catch -> catchError
switch -> switchAll
finally -> finalize
map switchMap mergeMap
mep 类似于 Array.prototype.map()
switchMap switchMap 会停止发出先前发出的内部 Observable 并开始发出新的内部 Observable 的值。(可以停止上一次发出的ajax)
mergeMap 将每个值映射到Observable,必须返回一个Observable
scan 和 reduce
reduce 只返回最后的值
// res: 12, 15
from([2, 3]).pipe(
scan((acc, item) => acc += item, 10))
.subscribe(v => console.log(v))
// res: 15
from([2, 3]).pipe(
reduce((acc, item) => acc += item, 10))
.subscribe(v => console.log(v))
filter 和 partition
filter 返回你想要的数据
partition 返回两个 Observables [0] 符合断言, [1] 不符合断言
from([2, 3, 4]).pipe(
filter(item => item <= 3))
.subscribe(v => console.log(v))
pairwise()
将当前值和前一个值作为数组放在一起,然后将其发出
of(1, 2, 3)
.pipe(
pairwise()).subscribe(v => console.log(v))
[1,2]
[2,3]
min,max,count
都可以接收一个函数作为参数
from([1,2]).pipe(max()).subscribe(l) // 2
from([1,2]).pipe(min()).subscribe(l) // 1
from([1,2]).pipe(count()).subscribe(l) // 2
distinct(lambda) distinctUntilChanged([(Prev, current)=>{}]) 和 distinctUntilKeyChanged(key)
过滤掉重复的项
from([1, 2, 2, 3, 2])
.pipe(distinct())
.subscribe(l); // 1,2,3
elementAt
只发出第n个值, 然后完成 ,从0开始
from([1, 2])
.pipe(elementAt(0, "default value"))
.subscribe(l);
ignoreElements()
忽略源所发送的所有项,只传递 complete 或 error
skip(count: Number),skipLast(count: number),skipWhile(lambda)
skip 跳过源发出的前N个值
skipLast 跳过源最后发出的的N个值
skipWhile 跳过lambda返回true的值
take(count: number), takeLast(count: number),takeUntil(notifier: Observable),takeWhile(lambda)
take 接收源 最初的N个值
takeLast 接收源最后N个值
takeUntil notifier发出值, 源断流
takeWhile lambda返回true,才发出源的值
throttle(lambda: Observable)和 throttleTime(number)
先发出最新的值, 在忽略
audit(lambda: Observable)和 auditTime(number)
先忽略, 在发出最新的值
interval(500)
.pipe(auditTime(1000))
.subscribe(l); // 1s后发出 2, 1被忽略
debounce(lambda: Observable) 和 debounceTime(number)
延时发送源发出的值, 如果期间源发出了新值的话,返回的值为最新的值,上一个会被丢弃掉(避免高消费事件时使用)
sample(Observable) 和 sampleTime(number)
在周期时间间隔内发出源最新值。
find 和 findIndex
类似 Array.prototype.find()
toPromise
把 Observable 转化为 promise
click = async e => {
let res = await ajax('http://localhost:1995/a').pipe(map(res => res.response)).toPromise();
l(res)
}
buffer bufferCount bufferTime bufferToggle bufferWhen
buffer系列,将过去的值作为数组收集,在事件触发时发出收集好的值
const send$= fromEvent(document, 'click');
const interval = interval(1000);
const buffered = interval.pipe(buffer(send$));
buffered.subscribe(l);
defaultIfEmpty
如果源Observable完成而没有发出任何next值,则发出给定值 ,否则镜像源Observable
const { of, from, empty } = require("rxjs");
const { mergeMap, defaultIfEmpty } = require("rxjs/operators");
from([1, 2, 2, 3, 2])
.pipe(
mergeMap(el => (el > 10 ? of(el) : empty())),
defaultIfEmpty("not data"),
)
.subscribe(l); // not data
delay delayWhen
延迟来自源Observable的项目的发射
endWith
from([1, 2])
.pipe(endWith("源观察完成后,附加一个发射,然后完成。"))
.subscribe(l); // 1, 2, "源观察完成后,附加一个发射,然后完成。"
不常用的
pluck(properties: ...string); 取一个对象的属性类似 obj.xxx.xxx
toArray(); 把流发出的值塞在Array后,返回Array
rxjs 常用的管道操作符的更多相关文章
- rxjs 常用的静态操作符
操作符文档 API create const { Observable } = require('rxjs'); // 创建 Observables var observable = Observab ...
- magrittr管道操作符使用解释(一)
使用管道操作符提高代码简洁性 在编写R语言代码时,有时候需要对一个变量进行一系列的运算,例如对于一个同时包含数值列和字符串列的数据框,如果要计算所有数值列之间的相关系数,一般要分两步,第一步首先筛选数 ...
- MongoDB入门---聚合操作&管道操作符&索引的使用
经过前段时间的学习呢,我们对MongoDB有了一个大概的了解,接下来就要开始使用稍稍深入一点的东西了,首先呢,就是MongoDB中的聚合函数,跟mysql中的count等函数差不多.话不多说哈,我们先 ...
- (数据科学学习手札144)使用管道操作符高效书写Python代码
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,一些比较熟悉pandas的读者 ...
- javaScript常用运算符和操作符总结
javaScript常用运算符和操作符总结 类别 操作符 算术操作符 +. –. *. /. %(取模) 字符串操作符 + 字符串连接 +=字符串连接复合 布尔操作符 !. &&. ...
- R语言中的管道操作符 %>% %T>% %$% %<>%
magrittr 包的官网 https://magrittr.tidyverse.org/ magrittr 包的 github 主页 https://github.com/tidyverse/mag ...
- angular管道操作符的使用
一.Angular的常用内置管道函数 比如说很多时候我们需要把数字显示成金额.大小写转换.日期小数转换等等. Angular管道对于象这样小型的转换来说是个很方便的选择. 管道是一个简单的函数,它接受 ...
- rxjs一句话描述一个操作符(1)
之前一直在写LINQ之类的东西,对于函数式的面向对象还是有一些功底,所以对于rxjs,感觉上不是很难,但是每次看完过几天就忘,还是记一下笔记吧,好记性不如烂笔头真不是盖的. 首先介绍几个重要的概念. ...
- Smarty笔记 和20个常用的变量操作符
什么是Smarty变量操作符php模板引擎smarty内置的一些操作函数,我们称之为变量操作符,变量操作符可用于操作变量,自定义函数和字符.(跟我PHP中常用的PHP内部函数类似)他可以帮助我们完成很 ...
随机推荐
- SQL Server 2012安装step by step
安装光盘介质问题,报错,换盘 Overall summary: Final result: Passed Exit code (Decimal): ...
- JDK自带的运行监控工具JConsole观察分析Java程序的运行
原文地址:https://blog.csdn.net/libaolin198706231987/article/details/55057149 一.JConsole是什么 从Java 5开始 引入了 ...
- spring-mybatis-data-common程序级分表操作实例
spring-mybatis-data-common-2.0新增分表机制,在1.0基础上做了部分调整. 基于机架展示分库应用数据库分表实力创建 create table tb_example_1( i ...
- Linux深入理解Socket异常
在各种网络异常情况的背后,TCP是怎么处理的?又是怎样把处理结果反馈给上层应用的?本文就来讨论这个问题.分为两个场景来讨论 建立连接时的异常情况 1 正常情况下 经过三次握手,客户端连接成功,服务端有 ...
- Chrome F12 温故而知新 :因为重定向导致清空Network信息
虽然我以前都是用Fiddler 4来作为解决方案.但实际上可以勾选 [Preserve log]来保存日志 这样就不担心因为页面重定向导致清空了日志了
- 项目在iOS11上遇到的小问题
iOS11正式版出了这么久了,在忙完新版本开发,写下在iOS11上的一些小问题. 1 App图标不显示 现象:升级到iOS11系统下自己的项目桌面app图标不见了 出现这种情况我还以为自己手动删除 ...
- jsonp的工作原理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 《CLR via C#》读书笔记 之 计算限制的异步操作
<CLR via C#>读书笔记 之 计算限制的异步操作 2014-07-06 26.1 CLR线程池基础 返回 如25章所述,创建和销毁线程是一个比较昂贵的操作: 太多的线程也会浪费内存 ...
- 9款最好的JavaScript压缩工具
削减是一个从源代码中删除不必要的字符的技术使它看起来简单而整洁.这种技术也被称为代码压缩和最小化.在这里,我们为你收集了10个最好的JavaScript压缩工具将帮助您删除不必要的空格,换行符,评论, ...
- mxnet:背景介绍
学习的过程 使用mxnet作为教程的深度学习库,重点介绍高层抽象包gluon 双轨学习法,既教授大家从零实现,也教授大家使用gluon实现模型:前者为了理解深度学习的底层设计,后者将大家从繁琐的模型设 ...