RxJS6冷观察者和热观察者
可觀測物和流式
使用Angular 6时经常会遇到Observable。然而,这似乎相对难以理解。
Observable被定义为值(Value)或事件(Event)的流,并经常被解释。
然而,如果将流媒体比作河流的流动,可能会阻碍对其之后理解的掌握。
因此,将川流一直流动作为自然的形象,仅仅定义一个Observable就会让人误以为这个流动已经发生了。
首先,必須理解Observable在冷流和热流之间的区别。
冷 Observable 在被定义的时候并不会产生数据流。
只有在接收方执行subscribe时,才会触发该过程。
然而,对于Hot Observable,它会无论接收方的情况如何,都会产生数据流。
這與一般河流的印象相同。
需要明确这些差异。
日本語のビデオ解説はこちらです:https://youtu.be/WsOqyG3_nnA
视频解说(英文)
冷静可观察的 kě chá de)
首先,让我们看看冷可观察对象。
Observable是事件和值的流。
然而,仅仅定义了Observable还没有产生任何流动。
因为没有订阅者进行订阅操作,也就是说接收方或者说听众没有执行订阅。
接收方执行了关于Fish的订阅。鱼出现了。
在这里,接收方执行了”Unsubscribe”操作。鱼群消失了。
热可观测的 (rè kě cè de)
接下来,讲解的是Hot Observable。
在热可观察对象的情况下,不论接收方的状态如何,即无论是否执行订阅操作,数据流都会产生。
这个典型的例子就是键盘事件和鼠标事件。
当用户在此处执行”Subscribe”操作后,他们可以几乎同时分享该信息。
参考文献
-
- “Observable”,
-
- http://reactivex.io/documentation/observable.html
-
- “Reactive Programming with RxJS 5: Untangle Your Asynchronous JavaScript Code”, 2018/2/15,Sergi Mansilla
-
- https://www.amazon.co.jp/Reactive-Programming-RxJS-Asynchronous-JavaScript/dp/1680502476/ref=sr_1_7?ie=UTF8&qid=1537063252&sr=8-7&keywords=reactive+programming
-
- “Angular6 から始める RxJS6 入門”,
-
- https://qiita.com/MasanobuAkiba/items/a5026bd37603cc29e9e7
-
- “Comprehensive Guide to Higher-Order RxJs Mapping Operators: switchMap, mergeMap, concatMap (and exhaustMap)”,
-
- https://blog.angular-university.io/rxjs-higher-order-mapping/
-
- “Angular 5, Angular 6 Custom Library: Step-by-step guide”,
-
- https://www.udemy.com/angular5-custom-library-the-definitive-step-by-step-guide/
-
- “Angular 5, Angular 6用 カスタムライブラリの作成: 完全ステップ・バイ・ステップ・ガイド”,
- https://www.udemy.com/angular5-l/