Rxjs在angular中的赋值应用场景。

现在有以下场景,在Component中有2个属性,代码如下:

// 在OnInit事件中获取服务端的数据
yearList: Observable<string[]>; 

// 默认值为0,当从服务端得到yearList之后从yearList中获取第0个并赋值给year
year: BehaviorSubject<string> = new BehaviorSubject('0'); 

ngOnInit() {
    this.yearList = this.service.getYearList()
        .withLatestFrom(this.year)
        .map(([yearList, year]) => {
            if (year === '0' && yearList.length > 0) {
                this.year.next(yearList[0]);
            }
            return yearList;
        });
}

上面代码的意思是:
在组件OnInit事件中获取yearList数据,它的结果是一个字符串数组,然后从这个数组里面获取第0个并赋值给year。 其中赋值的过程我是使用的是操作符map方法,最后在这个方法中再把yearList给return出去。

虽然运行中没有什么问题,总觉着这不是一个很好的方法,在我理解来看,map方法应该是用来将yearList转换为其他数据的一种操作行为,类似Array.map方法。

我想问的是,像这种赋值的场景有什么其他的好方法吗?

阅读 2.7k
1 个回答
    this.yearList = this.service.getYearList()
        .do(yearList => {
            if (this.year.value === '0' && yearList.length > 0) {
                this.year.next(yearList[0]);
            }
        })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进