用简单的代码实现简易的rxjs的filter功能,帮助rxjs新手了解rxjs的操作符的工作原理。
来源:互联网 发布:linux 下安装jdk 编辑:程序博客网 时间:2024/06/07 00:48
最近学习rxjs,在边学习的过程中边总结,希望可以帮助到大家。
我模仿rxjs的功能自己在编写简介的类rxjs,这样可以加深我对它的使用,也可以让新手更快速入门,先从最简单的observable对象将起。
我们正常使用rxjs如下:
var Rx = require("rxjs");//需要npm install rxjs 引入
var observable = Rx.Observable.create((observer)=>{
observer.next(1);
observer.next(2);
observer.next(3);
observer.next(4);
observer.next(5);
observer.next(6);
observer.next(7);
observer.next(8);
observer.next(9);
observer.next(10);
})
observable.subscribe(console.log);
执行结果:1 2 3 4 5 6 7 8 9 10
这个代码等效于如下(自己的翻译,如有问题欢迎纠错)
function Observable(title){
this.title = title;
this.subscribe = (observer)=>{
observer.next(1);
observer.next(2);
observer.next(3);
observer.next(4);
observer.next(5);
observer.next(6);
};
return this;
}
let observable = new Observable("main");
let observer = {
next:console.log
};
observable.subscribe(observer);
到目前为止都是很好理解的吧,如果这段代码也看不懂就得先学习更基础的js了。
如果没有问题就继续往下面看,接下来我大致实现了filter操作符的基本功能,为了简洁我直接用next代替了observer。
代码如下:
function Observable(title){
this.title = title;
this.subscribe = (next)=>{
next(1);
next(2);
next(3);
next(4);
next(5);
next(6);
};
this.filter = (filterFun)=>{
let that = this;
let newObservable = new Observable("filter");
newObservable.subscribe = (next)=>{
let _next = (val)=>{
filterFun(val) ? next(val) : null;
}
that.subscribe(_next);
}
return newObservable;
}
return this;
}
let observable = new Observable("main");
observable.filter(v=>v%2===0).subscribe(console.log);
filter之后只有满足条件的next会触发注册的方法,这个用法和rxjs的用法类似,其他的操作方法类似。
- 用简单的代码实现简易的rxjs的filter功能,帮助rxjs新手了解rxjs的操作符的工作原理。
- 使用 RxJS 实现 JavaScript 的 Reactive 编程
- 使用 RxJS 实现 JavaScript 的 Reactive 编程
- 通俗的方式理解RxJS
- RxJS入门(2)---Observable的介绍
- RxJS的秘密 Observable 可观察对象
- Ngrx、RxJs、Redux的初步探究
- RxJS
- RXJS
- RxJS
- rxjs-操作符
- RxJS常用操作符
- rxjs常见操作符
- RxJS入门(7)----创建一个完整的web application
- RxJS入门(8)----创建一个完整的web application
- Angular开发(二十七)-补充rxjs的使用
- RxJS核心概念之Subjet在angular2+上的应用
- Angular4中使用RxJS Observable的scan运算符 Operator '+' cannot be applied to types '{}'异常
- (springmvc)页面找不到静态资源文件Failed to load resource: the server responded with a status of 404 (Not Found)
- mt6735 [Audio App]拖动歌曲计时条过程中,如何显示当前快进的时间
- TraceView 创建文件.trace文件出现 read-only file system问题
- Java NIO Channel
- Testbench基本入门
- 用简单的代码实现简易的rxjs的filter功能,帮助rxjs新手了解rxjs的操作符的工作原理。
- csdn积分获取攻略
- 抗混叠滤波器的概念
- 修改 Linux下面文件夹的颜色
- java 数据结构--顺序表
- Android app调用第三方地图(百度地图,高德地图)导航
- win7怎么打开注册表
- LeetCode 345. Reverse Vowels of a String
- TCP/IP详解卷1:协议(七)【动态选路协议 , UDP:用户数据报协议】