我正在使用Angular(4)并需要帮助来处理异步数据:
下面你可以看到方法connect()。第一个命令订阅我的服务的Observable。以下行也需要在此订阅中。但我不知道怎么做。该方法应将方法getSortedData()的结果作为Observable返回。
我项组分
//...
items: Item[];
//...
connect(): Observable<Item[]> {
this.myItemService.getItem().subscribe(response => {
this.items = response;
});
const displayDataChanges = [
this.myItemService.getItem(),
this.sort.sortChange,
];
return Observable.merge(...displayDataChanges).map(() => {
return this.getSortedData(this.items);
});
}
//..
答案 0 :(得分:1)
不要在运算符内读取可变状态。当它们发生变化时,observable将不会知道也不会再次运行您的代码。
所以我删除了this.items
的使用情况,并且我将sort
参数传递给getSortedData()
。
connect(): Observable<Item[]> {
const displayDataChanges = [
this.myItemService.getItem(),
this.sort.sortChange,
];
return Observable.combineLatest(...displayDataChanges).map(([items, sort]) => {
return this.getSortedData(items, sort);
});
}
而不是merge()
,我调用combineLatest()
,每当任何一个观察者改变时,它将运行以下运算符,每个运算符都包含最新值。