【发布时间】:2019-07-12 19:44:15
【问题描述】:
我正在开发一个示例应用程序,其中有一个登录组件,它调用身份验证服务。服务轮流进行 Http 调用,根据调用的响应,我需要做一些事情。
在服务中,当我的用户能够登录时,我使用 http Post 和 subscribe 来做一些事情,但是,我希望我的组件函数从我的操作中使用这个响应并相应地继续。
下面是代码: 登录组件:
this.authService.login(this.userName, this.password)
身份验证服务
return this.http.post('http://localhost:8080/login',{
"username": userName,
"password": password
}).subscribe(data => {
//some stuff
return true;
}, () => return false;
})
我希望我的 LoginComponent 等到它从服务接收到 true 或 false。
这样做的一种方法是将http调用返回给组件并在那里编写整个逻辑,但这不是我所期待的。我希望是否有更好的方法来做到这一点。
【问题讨论】:
-
不订阅服务。在组件中订阅。
-
服务通常不执行逻辑。常见的事情是从服务返回 Subscription 并在组件中订阅。我知道你说这不是你要找的。但是一种解决方法可能是在服务中的订阅返回某些内容时使用服务中设置为 true 或 false 的变量。在组件中执行 setTimetout,每 n 毫秒检查一次变量是否未定义。当它具有值时,您就知道该服务已经完成了它的工作。但是,嗯,我认为这不是一个好方法。
-
^*从服务中返回 Observable*
-
Op 你能更具体地说明你想要做什么stuff吗?
标签: angular rxjs angular-httpclient