RXJS 基于可观测数据流在异步编程应用中的库
RxJS
是ReactiveX
编程理念的JavaScript
版本。ReactiveX
来自微软,它是一种针对异步数据流的编程。简单来说,它将一切数据,包括HTTP请求,DOM事件或者普通数据等包装成流的形式,然后用强大丰富的操作符对流进行处理,使你能以同步编程的方式处理异步数据,并组合不同的操作符来轻松优雅的实现你所需要的功能。
RxJS 是使用 Observables 的响应式编程的库,它使编写异步或基于回调的代码更容易。这个项目是 Reactive-Extensions/RxJS(RxJS 4) 的重写,具有更好的性能、更好的模块性、更好的可调试调用堆栈,同时保持大部分向后兼容,只有一些破坏性的变更(breaking changes)是为了减少外层的 API 。
ReactiveX
ReactiveX
由微软于2012年开源,目前各语言库由ReactiveX
组织维护。RxJS
在GitHub
上已有8782
个star,目前最新版本为5.5.2
,并持续开发维护中,其中官方测试用例共计2699
个。
兼容性
RxJS
中的流以Observable
对象呈现,获取数据需要订阅Observable
,形式如下:
const ob = http$.getSomeList(); //getSomeList()返回某个由`Observable`包装后的http请求
ob.subscribe((data) => console.log(data));
//在变量末尾加$表示Observable类型的对象。
以上与Promise
类似:
const promise = http.getSomeList(); // 返回由`Promise`包装的http请求
promise.then((data) => console.log(data));
实际上Observable
可以认为是加强版的Promise
,它们之间是可以通过RxJS
的API
互相转换的:
const ob = Observable.fromPromise(somePromise); // Promise转为Observable
const promise = someObservable.toPromise(); // Observable转为Promise
因此可以在Promise
方案的项目中安全使用RxJS
,并能够随时升级到完整的RxJS
方案。
轻量级
RxJS(v5)
整个库压缩后约为140KB
,由于其模块化可扩展的设计,因此仅需导入所用到的类与操作符即可。导入RxJS
常用类与操作符后,打包后的体积约增加30-60KB
,具体取决于导入的数量。
不要用
import { Observable } from 'rxjs'
这种方式导入,这会导入整个rxjs
库,按需导入的方式如下:import { Observable } from 'rxjs/Observable' //导入类
import 'rxjs/add/operator/map' // 导入实例操作符
import 'rxjs/add/observable/forkJoin' // 导入类操作符
RXJS 中文文档:https://www.wenjiangs.com/docs/rxjs
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论