rxjs里的Observable对象和map配合的一个用法
源代码:
import { of } from 'rxjs';
import { Injectable } from '@angular/core';
import { map } from 'rxjs/operators';@Injectable()
export class JerrySandBoxService{name = 'Jerry';print(){const observable = of(1, 2, 3);const opt = map(num => 'hello world: ' + num + ' done');const newObservable = opt(observable);newObservable.subscribe(data => console.log(data));}
}
执行结果:
map操作符接收的是一个箭头函数:
map内部的实现:返回一个新的名为mapOperation的函数,接受单参数。
现在执行opt操作:
source是Observable,project是应用开发人员指定的箭头函数:
Map operator的构造函数:
新建一个Observable对象,将当前Observable对象传给source,operator.project即箭头函数:
对新的Observable对象调用subscribe:
注意这种语法:把this里包含的operator对象赋值给大括号里的operator变量:
sink是subscriber,source是Observable,operator是箭头函数:
如果有operator,先执行箭头函数:
把箭头函数返回的结果,作为新的输入参数,传入到subscriber的next方法里:
最终执行调用subscribe时传入的箭头函数:
再看另一个例子:使用map优雅地消费一个API:
const http$ : Observable<Course[]> = this.http.get('/api/courses');http$.pipe(tap(() => console.log('HTTP request executed')),map(res => Object.values(res['payload']))).subscribe(courses => console.log("courses", courses));
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
rxjs里的Observable对象和map配合的一个用法相关推荐
- rxjs里的Observable对象subscribe方法的执行原理
看个例子: const myObservable = of(1, 2, 3);// 创建一个观察者对象-Observer(处理next.error.complete回调)const myObserve ...
- rxjs里的Observable对象如何消费
测试代码: import { of } from 'rxjs'; import { Injectable } from '@angular/core';@Injectable() export cla ...
- 通过一个最简单的例子,理解Angular rxjs里的Observable对象的pipe方法
源代码: import { of } from 'rxjs'; import { Injectable } from '@angular/core'; import { map } from 'rxj ...
- rxjs of操作符生成的Observable对象的执行详细分析
代码: const a = of([1, 2, 3]); a.subscribe((data) => console.log('Fairy:' + data)); 单步调试,首先执行of所在的i ...
- 如何在Chrome调试器里检查嵌套Observable对象
一个例子: 举个例子,看如下这个嵌套的Observable对象: items$: Observable<Observable<Product>[]> = this.compon ...
- 从调试器里观察到的Observable对象反推出其赋值的源代码位置
展开Observable对象,从其operator能观察到施加在该Observable对象上的操作: Map操作:(event) => this.getBreakpoint(event.targ ...
- rxjs里switchMap operators的用法
switchMap相关文章 rxjs里switchMap operators的用法 通过rxjs的一个例子, 来学习SwitchMap的使用方法 rxjs switchMap的实现原理 rxjs的ma ...
- rxjs 里的pipe operator
源代码: const a = of([1, 2, 3]);const b = map((data: number[]) => {for( let i = 0; i < data.lengt ...
- rxjs里scan operator的执行研究
源代码: ngOnInit(): void {console.log('before ngOnInit');const source$ = range(0, 10);source$.pipe(/*fi ...
最新文章
- Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:命令选项...
- react取消所有请求_React Hooks中取消HTTP请求来避免内存泄漏
- java面试换背景颜色_证件照换底色 证件照换背景 证件照背景颜色
- linux ftp服务器构建
- 业界盘点|为什么推荐算法都开始结合图神经网络了?
- 我的职场战争--一年来的开发组内战实录
- php static_castunsigned int,static_cast揭密
- 《软件需求分析(第二版)》第 11 章——一图胜千言 重点部分总结
- 【华为云技术分享】机器学习(02)——学习资料链接
- 四大领域全面发力,腾讯云构筑全链路开发者服务体系
- 深入理解Flink ---- 系统内部消息传递的exactly once语义
- cenos安装erlang
- Java学习之贷款案例
- android 自定义View【2】对话框取色色盘取色的实现
- Unity 基础 之 Camera摄像机属性介绍
- 英特尔核显驱动hd630_hd630相当于什么显卡
- 肿瘤全外显子--记录
- 介绍dbt,ETL和ELT Disrupter
- 强大的健身软件——Keep
- MFC PreTranslateMessage(MSG* pMsg)中调用DoModal()模态窗口问题
热门文章
- 如何在Mac上安装win10正版系统
- Ehcache BigMemory: 摆脱GC困扰(转)
- Yii rabc角色权限管理文章推荐
- ASP.NET的地址重写“.NET研究”(URLRewriter)实现原理及代码示例
- 分享Silverlight/WPF/Windows Phone一周学习导读(06月13日-06月18日)
- 在Windows 2000下优化Oracle9i性能[转]
- Github 完整学习教程
- [力扣]1018_可被5整除的二进制前缀
- OO第三次博客作业---透过代码看设计
- MySQL数据库篇之初识数据库