首页 > 解决方案 > 从 http Post 返回 Observable

问题描述

我正在开发一个示例应用程序,其中有一个登录组件,它调用身份验证服务。服务轮流进行 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调用返回给组件并在那里编写整个逻辑,但这不是我所期待的。我希望是否有更好的方法来做到这一点。

标签: angularrxjsangular-httpclient

解决方案


你可以写

import { Observable } from 'rxjs/internal/Observable';

return new Observable((subscriber) => {
    this.http.post('http://localhost:8080/login', {
        userName,
        password,
    }).subscribe(data => {
        //some stuff
        subscriber.next(true);
    }, () => subscriber.error();
});

推荐阅读