在@ ngrx / store中映射vs订阅

时间:2017-08-27 12:23:52

标签: angular rxjs ngrx-store

我是angular2的新手,目前,我正在开发一个使用@ngrx / store和subscribe类的项目。订阅商店工作时,我对地图方法的方法感到困惑。请帮我理解何时使用map和subscribe方法。代码如下。

this.store.select('rating').subscribe(({ topPicks }) => { // code is working });
this.store.select('rating').map(({ topPicks }) => // not working);

1 个答案:

答案 0 :(得分:0)

据我所知,这里this.store.select('rating')是一个Observable。取决于observable是Hot还是Cold,(更多信息请参阅此blog)observable将开始发出值。在您的情况下,第一个语句有效,因为您订阅了observable。 Map只是一个运算符,您可以将它用于observable发出的值(它不作为订阅者)。

第二个语句不起作用,因为Observable没有订阅者。要使用地图运算符,您可以执行以下操作:

this.store.select('rating').map(/* Do whatever you want to with the emitted values here */).subscribe(({ topPicks }) => {});

要了解有关运营商的更多信息,您可以查看documentation