我正在进行http调用以验证用户身份。目前,我这样做:
authenticate(username, password) {
const user = {username, password};
this.username = user.username;
const headers = new HttpHeaders();
headers.set('Content-Type', 'application/json');
return this._httpClient.post<any>(environment.api_url + '/auth', user, {headers: headers}).do(x=>{
this.isLoginSubject.next(true);
});
}
注意,我在do中调用this.isLoginSubjct.next(true)
,但我不确定这是否适合调用它。
在我的登录组件中,我有一个handleLogin方法,所以我不确定它是否属于subscribe的成功回调。
答案 0 :(得分:0)
您可以在任何一个地方执行此操作,因为do
运算符可以像这样运行副作用。真正的不同之处在于subscribe
会使Observable&#34; hot&#34;,它似乎不想在这里做,因为你只是返回一个可以订阅的观察者根据需要,而不是返回有效订阅。
do
或tap
运算符主要用于调试,但它可用于隔离副作用而不激活observable,就像你在这里一样。
我认为estus的评论也总结得很好,所以我会把它包含在这里以获得好的评价:&#34;做得好。您不太可能想要将其移动到订阅,因为订阅通常是在服务消费的地方完成的,而不是在服务本身中完成&#34;