在StackBlitz里创建一个rxjs项目,源代码如下:

import { Observable, of } from "rxjs";
import { map } from "rxjs/operators";
import { interval } from "rxjs";
import { switchMap } from "rxjs/operators";const pollTasks = () => {return interval(1000).pipe(switchMap(counter => {return of(counter + 100);}),map(res => res + res));
};// caller can do subscription and store it as a handle:
let tasksSubscription = pollTasks().subscribe(data =>console.log("timestamp: " + new Date() + ": " + data)
);
// turn it off at a later timesetTimeout(() => tasksSubscription.unsubscribe(), 10000);

十秒之后自动关闭:

首先用rxjs interval创建一个Observable对象,每隔1秒钟产生一个递增的整数:

interval(1000)返回的Observable调用pipe进行下一步处理:switchMap.

注意该switchMap的类型,接受一个输入参数,project函数。该project函数的输入是:value: number, index: number, 必须返回Observable. 整个project的函数类型是OperatorFunction<number, number>.

下面这个例子更加能够说明问题:

import { Observable, of, OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";
import { interval } from "rxjs";
import { switchMap } from "rxjs/operators";const add1Fn = value => value + 1;
const add1OP: OperatorFunction<number, number> = map(add1Fn);const pollTasks = () => {return interval(1000).pipe(switchMap(counter => {return of(counter + 100);}),map(res => res + res),add1OP);
};// caller can do subscription and store it as a handle:
let tasksSubscription = pollTasks().subscribe(data =>console.log("timestamp: " + new Date() + ": " + data)
);
// turn it off at a later timesetTimeout(() => tasksSubscription.unsubscribe(), 3000);

将函数传入rxjs的operator,返回的是一个operatorFunction,将这个operatorFunction传入pipe,返回的是新的Observable.

更多Jerry的原创文章,尽在:“汪子熙”:

rxjs的一个例子:什么是rxjs的OperatorFunction?相关推荐

  1. 通过rxjs的一个例子, 来学习SwitchMap的使用方法

    switchMap相关文章 rxjs里switchMap operators的用法 通过rxjs的一个例子, 来学习SwitchMap的使用方法 rxjs switchMap的实现原理 rxjs的ma ...

  2. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  3. R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型预测中系统误差的一个例子 .自定义函数计算R方指标和均方根误差RMSE 目 ...

  4. python中self_一个例子带你入门Python装饰器

    ============ 欢迎关注我的公众号:早起python ============ 前言 在还未正式发布的python3.9中,有一个新功能值得关注,那就是任意表达式可以作为装饰器,如果你还不知 ...

  5. ftp服务器文件备份,数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子...

    数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子 以备份oracle数据为例 本机IP:192.168.0.1 远程IP:192.168.0.111 备份脚本 ora_bak ...

  6. Bootice1.34版本把grub4dos0.46a写入硬盘MBR失败一个例子

    Bootice1.34版本把grub4dos0.46a写入硬盘MBR失败一个例子         一个同事的台式机,BIOS启动,500GB硬盘,分了四个MBR分区,C盘是激活的主分区,第二个分区50 ...

  7. 用一个例子告诉你gdb调试工具如何使用

                                        用GDB调试程序 GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式 ...

  8. C++中const——由一个例子想到的

    前天同学实现了<C++ Primer>中关于虚函数的一个例子,拿过来问我,代码如下: #include<iostream> #include<string> usi ...

  9. UA PHYS515A 电磁理论II 静电学问题的一个例子

    UA PHYS515A 电磁理论II 静电学问题的一个例子 例 假设有一个中空球形导体,中空部分也是一个球形,半径为aaa,球心与导体相同,导体半径为bbb:球心处有一个+q+q+q的点电荷,距离圆心 ...

最新文章

  1. SAP HUM 使用HU02去Unpack一个HU
  2. IDEA---Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
  3. cgo的几种使用方式
  4. python吃内存还是cpu_Python2 得到 CPU 和内存信息要怎么实现呢?
  5. 格式说明_现代诗歌的写作格式是什么,能否举例说明?
  6. Android RecyclerView 使用完全解析 体验艺术般的控件
  7. 配置ISCSI客户端(LINUX)
  8. vue - (引入jq)
  9. python dataframe排序_python – Pandas DataFrame排序忽略了这种情况
  10. python Image 安装
  11. opencv 4计算机视觉项目实战_资源|计算机视觉实战操作(PDF下载)
  12. 计算机组成原理—地址码
  13. Tomcat8.0之后GET请求不需要再设置中文乱码问题
  14. ai人工智能的数据服务_数据科学和人工智能如何改变超市购物
  15. vim如何删除^M字符
  16. 阿里云播放器Aliplayer-WEB走坑中
  17. 最新PyCharm2018破解教程
  18. 华为服务器系统图标,监控服务器图标
  19. 银行卡所属银行的查询接口--阿里提供
  20. 智能合约升级原理01---起源

热门文章

  1. JavaScript怎么上传图片
  2. 《苹果往事:开发麦金托什的非凡岁月》撷英
  3. 分布式与人工智能课程(part14)--深度学习
  4. Django(part28)--F对象
  5. SAP Spartacus Session affinity
  6. windows 10 使用 VMWare workstation player 启动 windows XP 虚拟机出错的问题
  7. 检测 SAP Spartacus 服务器端渲染页面响应时间的两种办法
  8. SAP Spartacus B2B user列表对应的Angular Component
  9. sap.ui.layout.HorizontalLayout is not a constructor
  10. Angular ng-template元素的学习笔记