我已经看到了与角度服务中的可观察对象进行交互的两种方式:
@echo off
setlocal enabledelayedexpansion
for /f %%i in (ip.txt) Do (
set "ip=%%i"
echo !ip!
ping !ip!
nslookup !ip!
)
明显的区别是,使用方法为每次调用创建一个新的public getSomeData(): Observable<FooData> { ... }
// or
public someData$: Observable<FooData>;
实例,第二个选择共享一个相同的Observable
实例(通常在构造函数中创建)。
两种方法的优缺点是什么?在两者之间进行选择时应该考虑什么?
答案 0 :(得分:0)
您所说的话是不正确的,我可以列举的还不止于此:
public SomeData$() { ... }
public someData$ = new XXX(...);
public get someData$() { ... }
public someData$ = () => { ... }
他们都做同一件事,这是您选择对他们做的事情。
实现有所不同,但是语法没有任何改变。
要回答这个问题,取决于可观察的类型以及对它的使用类型。
可观察物可以热或冷。
冷可观察物是发出单个流然后停止的可观察物。 HTTP调用就是这样,或者of()
调用的结果也是如此。
热可观察物是指不断监听的可观察物。 Subject
就是这样。
您必须将它们用于有用的用途,但是您不必依靠语法来做到这一点。
选择所需的语法,然后在团队中实施。
例如,在我的研究中,我们倾向于将热的可观测对象用作数据源,并使用引用它的变量来公开可观测对象。
答案 1 :(得分:0)
恕我直言。简而言之:
方法方法更适合业务逻辑层和请求API的服务
属性方法更好。
长答案:
使用方法,您可以直接与Observable进行交互,因此可以直接设置请求参数,过早完成请求参数等。通常,此处的数据参数因请求而异(请考虑类别或页面API请求)。示例:
按类别获取产品的服务。
和页面上的两个小部件,它们显示两个不同的类别。
-
使用属性,您可以在应用程序的许多部分之间共享Observable上的数据,尽管交互请求数据更为间接(例如ngrx,websocket,外部事件源,例如窗口滚动)。这样做的好处是它集中且不会有重复的请求。示例:
获取已登录用户数据的服务,该数据将在整个应用程序中使用。
在该服务中,您将拥有更新和重置它的方法以及一个可观察到的方式,所有关联方都将订阅
-
希望有帮助