Javascript 在角度6中,store.select与CONSTRUCTOR之间的差异?

Javascript 在角度6中,store.select与CONSTRUCTOR之间的差异?,javascript,angular6,ngrx-store,Javascript,Angular6,Ngrx Store,在构造函数中选择store与在构造函数之前选择store有什么不同吗 1) export class SomeClass { myObservable$ = <Observable<MyObservableType>>this.store.select(fromReducers.getMyObservable); constructor( private store: Store<fromReducers.State>

在构造函数中选择store与在构造函数之前选择store有什么不同吗

1) export class SomeClass {
      myObservable$ = <Observable<MyObservableType>>this.store.select(fromReducers.getMyObservable);
      constructor(
        private store: Store<fromReducers.State>
      ) { }
    } 

2) export class SomeClass {
      myObservable$ = Observable<MyObservableType>;
      constructor(
        private store: Store<fromReducers.State>
      ) {
        this.myObservable$ = this.store.select(fromReducers.getMyObservable);
      }
    }
1)导出类SomeClass{
myObservable$=this.store.select(fromReducers.getMyObservable);
建造师(
私人商店
) { }
} 
2) 导出类SomeClass{
myObservable$=可观测;
建造师(
私人商店
) {
this.myObservable$=this.store.select(来自reducers.getMyObservable);
}
}

为什么在ngrx/store中使用第二种变体?

不同之处在于,在第一种情况下,它在类实例化期间请求数据,这有可能减慢所有web应用程序的初始化过程,并有可能破坏用户体验

长操作不应进入构造函数或变量声明

最好的选择是将数据提取到
ngOnInit
方法中。所有潜在的长时间操作都是一样的

通过观察,对幕后发生的事情有一个最深刻的了解

在声明点初始化变量是一种很好的做法,但并不强制使用实际值初始化变量。通常,它们被初始化为null,然后在构造函数中或构造函数之后获取它们的值,因为通过这种方式,您应该确保您可以依赖的所有其他变量都应该被实例化


但这不是一条规则,它取决于你的类所做的事情,而这不是他所要求的。他所要求的是什么?看看他在哪里声明了
myObservable$
,他想知道用
this.store
在构造函数内部初始化它与在构造函数外部初始化它有什么区别。在我看来,他说的是store.select,这不是一个声明,是不是我错了?好吧,那有什么区别呢?环顾四周后,我找到了一篇讨论这些区别的帖子。就我个人而言,我更喜欢第二种方法,因为它更容易理解。在angular 6中,你可以将一个参数传递给构造函数,它的作用域是所有类实例