RxJS6冷观察者和热观察者

可觀測物和流式

使用Angular 6时经常会遇到Observable。然而,这似乎相对难以理解。

Observable被定义为值(Value)或事件(Event)的流,并经常被解释。

然而,如果将流媒体比作河流的流动,可能会阻碍对其之后理解的掌握。

因此,将川流一直流动作为自然的形象,仅仅定义一个Observable就会让人误以为这个流动已经发生了。

首先,必須理解Observable在冷流和热流之间的区别。

冷 Observable 在被定义的时候并不会产生数据流。

只有在接收方执行subscribe时,才会触发该过程。

然而,对于Hot Observable,它会无论接收方的情况如何,都会产生数据流。

這與一般河流的印象相同。

需要明确这些差异。

日本語のビデオ解説はこちらです:https://youtu.be/WsOqyG3_nnA

视频解说(英文)


冷静可观察的 kě chá de)

首先,让我们看看冷可观察对象。

Observable是事件和值的流。

undefined

然而,仅仅定义了Observable还没有产生任何流动。

因为没有订阅者进行订阅操作,也就是说接收方或者说听众没有执行订阅。

undefined

接收方执行了关于Fish的订阅。鱼出现了。

undefined

在这里,接收方执行了”Unsubscribe”操作。鱼群消失了。


热可观测的 (rè kě cè de)

接下来,讲解的是Hot Observable。

undefined

在热可观察对象的情况下,不论接收方的状态如何,即无论是否执行订阅操作,数据流都会产生。

这个典型的例子就是键盘事件和鼠标事件。


undefined

当用户在此处执行”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/
广告
将在 10 秒后关闭
bannerAds