http调用后何时在BehaviorSubject上调用?

时间:2018-03-15 19:12:48

标签: angular rxjs

我正在进行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的成功回调。

1 个答案:

答案 0 :(得分:0)

您可以在任何一个地方执行此操作,因为do运算符可以像这样运行副作用。真正的不同之处在于subscribe会使Observable&#34; hot&#34;,它似乎不想在这里做,因为你只是返回一个可以订阅的观察者根据需要,而不是返回有效订阅。

dotap运算符主要用于调试,但它可用于隔离副作用而不激活observable,就像你在这里一样。

我认为estus的评论也总结得很好,所以我会把它包含在这里以获得好的评价:&#34;做得好。您不太可能想要将其移动到订阅,因为订阅通常是在服务消费的地方完成的,而不是在服务本身中完成&#34;