gpt4 book ai didi

angular - 如何使用BehaviorSubject获取所有项目和单个项目?

转载 作者:行者123 更新时间:2023-12-02 17:29:01 28 4
gpt4 key购买 nike

我在此处使用本文后面的BehaviorSubject:

https://coryrylan.com/blog/angular-observable-data-services

在本文中,作者使用 loadAll() 加载所有项目,并使用 load() 加载单个条目。然后 load() 会将检索到的项目推送到 dataStore 中,然后将其发送到 next(...) 函数中,以便所有订阅者会收到通知。我不确定这是否是正确的方法 100%。我不知道为什么,但我觉得奇怪的是我们应该如何设计我们的服务。我可能是错的,因为我是 BehaviorSubject 的新手。所以我的问题是,这是检索所有项目和单个项目的正确方法还是有更好的方法?

最佳答案

从我所看到的......方式太多的开发人员正在使用BehaviorSubject,而一个更简单的解决方案就足够了。

只有当您有复杂的要求来在数据未绑定(bind)时监视数据更改时,才真正需要BehaviorSubject。否则,简单的数据绑定(bind)会为您处理监视更改。

这是我在服务中获取全部和获取一个的代码:

getProducts(): Observable<IProduct[]> {
return this._http.get<IProduct[]>(this._productUrl)
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}

getProduct(id: number): Observable<IProduct> {
return this.getProducts()
.map((products: IProduct[]) => products.find(p => p.productId === id));
}

我从OP提供的链接修改了plunker,我的结果在这里:https://plnkr.co/edit/r5PMFprgoWbzmFPTK3xN?p=preview

请注意,它提供了相同的基本功能,但没有BehaviorSubject,并且代码更加简化。

关于angular - 如何使用BehaviorSubject获取所有项目和单个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472497/

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