gpt4 book ai didi

Angular/ typescript : Write code in Subscription

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:44 25 4
gpt4 key购买 nike

我正在使用 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);
});
}
//..

最佳答案

不要读取运算符内部的可变状态。当它们发生变化时,可观察对象不会知道也不会再次运行您的代码。

所以我删除了 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);
});
}

我调用了 combineLatest() 而不是 merge(),它会在每次任何可观察值发生变化时运行以下运算符,并使用每个运算符的最新值。

关于 Angular/ typescript : Write code in Subscription,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com