《深入浅出rxjs》阅读

1.观察者模式

将逻辑分为发布者 (负责产⽣事件并通知所有注册挂上号的观察者)和观察者(被注册上某个发布者,只管接收到事件之后就处理)

在rxjs中:

  • 如何产⽣事件,这是发布者的责任,在RxJS中是Observable对象的⼯ 作。

  • 如何响应事件,这是观察者的责任,在RxJS中由subscribe的参数来决 定。

  • 什么样的发布者关联什么样的观察者,也就是何时调⽤subscribe

2.迭代器模式

提供⼀个通⽤的接口,让使⽤者完全不⽤关⼼这个数据集合的具体实现⽅式。

通常都应该包含这样⼏个函数:

  • ·getCurrent,获取当前被游标所指向的元素。

  • ·moveToNext,将游标移动到下⼀个元素,调⽤这个函数之后, getCurrent获得的元素就会不同。

  • ·isDone,判断是否已经遍历完所有的元素。

在rxjs中应用:subscribr之后不断进行推送。

3.Observable

var theObserver = { //观察者响应事件
next: item => console.log(item), //表达现在要推送的数据
complete: () => console.log('No More Data'),//推送完结,一般不写
error: () => {console.log('wrong')}//出错
}
var onSubscribe = observer => { //发布者发布事件
	var number = 1;
	var handle = setInterval(() => {
		observer.next(number++);
	}, 1000)
	return {
	unsubscribe: () => { //退订
	//clearInterval(handle);
	}
	};
};
var source$ = new Rx.Observable(onSubscribe);
source$.subscribe(theObserver)
setTimeout(() => {
	source$.unsubscribe();
}, 3500);
//Observable产⽣的事件,只有Observer通过subscribe订阅之后才会收到,在unsubscribe之后就不会再收到。
复制代码

1.hot Observable

const producer = new Producer();//独立一个的生产者
const cold$ = new Observable(observer => {
// 然后让observer去接受producer产⽣的数据
});
复制代码

2.Cold Observable

const cold$ = new Observable(observer => {
const producer = new Producer();//对每⼀次subscribe都产⽣⼀个“⽣产者”,
// 然后让observer去接受producer产⽣的数据
});
复制代码

4.操作符 根据功能,操作符可以分为以下类别:

·创建类(creation)

·转化类(transformation)

·过滤类(filtering)

·合并类(combination)

·多播类(multicasting)

·错误处理类(error Handling)

·辅助⼯具类(utility)

·条件分⽀类(conditional&boolean)

·数学和合计类(mathmatical&aggregate)

常见的操作符:

1.create(类函数)创建 Observable对象

2.map,filter(实例函数)类似于数组的map,filter

使用bind绑定特定Observable对象(不能链式调用), ::(绑定操作符,链式调用):

const operator = map.bind(source$);
const result$ = operator(x => x * 2);

const result$ = source$::map(x => x * 2).filter(x => x % 3 !== 0);
复制代码

操作符的实现例如map: 每个操作符都是⼀个函数,不管实现什么功能,都必须考虑下⾯这些 功能要点: ·返回⼀个全新的Observable对象。

·对上游和下游的订阅及退订处理。

·处理异常情况。

·及时释放资源。

我们以最简单的map操作符实现来说明上⾯的要点。

function map(project) {
    return new Observable(observer => {
        const sub = this.subscribe({
            next: value => {
            try {
                observer.next(project(value));
            } catch (err) {
                observer.error(err);
            }
        },
            error: err => observer.error(error),
            complete: () => observer.complete(),
        });
    });
}
复制代码

。。。持续更新中

本书的内容 本书以线性⽅式来介绍RxJS,所以建议读者以顺序的⽅式来阅读本 书,如果读者觉得对某⼀个⽅⾯已经⼗分了解,也可以跳过相关章节,不 过,还是希望读者在时间允许的情况下阅读全部内容,你肯定会有新的体 会。本书包含15章,章节的内容如下分布。 第1章 函数响应式编程。这⼀章⽤⼀些例⼦展⽰RxJS体现的编程风 格,引出两个重要的概念:函数式编程和响应式编程,使⽤RxJS的开发者 必须先理解这两种风格。 第2章 RxJS⼊门。这⼀章介绍软件项⽬中导⼊RxJS的⽅法,RxJS中 的基本概念,包括数据流、操作符和观察者模式。 第3章 操作符基础。使⽤RxJS很⼤程度上就是在使⽤操作符,这⼀ 章会介绍RxJS中操作符的实现原理。 第4章 创建数据流。这⼀章介绍RxJS中创建数据流的不同⽅法,包 括RxJS提供的主要创建类操作符的使⽤⽅法。 第5章 合并数据流。这⼀章介绍如何合并多个数据流,包括合并类操 作符的使⽤⽅法详解。 第6章 辅助类操作符。这⼀章介绍不是很起眼却很重要的两类操作 符,数学类和布尔条件类操作符。 第7章 过滤数据流。这⼀章介绍如何让流过数据管道的数据根据规则 筛选掉⼀部分,在这⼀章还会介绍⽤筛选法进⾏回压控制的⽅法。 第8章 转化数据流。这⼀章介绍对流经数据管道的数据进⾏格式转化 的⽅法,包括RxJS提供的各种转化类操作符的⽤法。 第9章 异常错误处理。这⼀章介绍数据流中产⽣的异常的处理⽅法, 包括如何捕获异常和实现重试。 第10章 多播。这⼀章介绍如何让⼀个数据源的内容被多个观察者接 收,包括Subject的使⽤⽅法和RxJS对各种多播场景的⽀持。 第11章 掌握时间的Scheduler。这⼀章介绍RxJS中Scheduler的概念。 第12章 RxJS的调试和测试。介绍RxJS应⽤的调试和单元测试⽅法, 深⼊介绍如何利⽤RxJS写出⾼可测试性的代码。 第13章 ⽤RxJS驱动React。这⼀章介绍RxJS和React结合的⽅法。 第14章 Redux和RxJS结合。这⼀章介绍Redux和RxJS的组合⽅式,包 括如何⽤RxJS实现Redux的功能,如何⽤Redux-Observable来发挥两者的共 同的优势。 第15章 RxJS游戏开发。这⼀章介绍⽤RxJS实现⼀款游戏breakout的 完整过程,综合了全书介绍的所有RxJS知识点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值