如何在angularJS函数中返回HTTP请求后的true或false

时间:2017-07-29 19:45:21

标签: angular http

环境 AngularJS 4

我尝试在函数中运行HTTP请求,但我无法将结果发回。 Beloow发布了一些评论我的代码。 我只需要truefalse值,但我什么也得不到。

我在这个问题上挣扎了一段时间,但没有找到解释和解决方案。有人可以给我一个暗示吗?

public runLoginProcess(username:String, password:String):boolean{

    let body= { "username":username,"password":password };
    let head = new Headers();
    head.append("Content-Type", "application/json");
    head.append("Accept", "application/json");

// RUN THE HTTP CALL AN IF IT WORKS, SEND TRUE AND ERROR IN CASE OF AN ERROR BACK
    this.http.post("<PATH TO MY SERVICE>", body)
      .subscribe(response => {
          let token = response.json() && response.json().token;
          if (token) {
            localStorage.setItem('currentUser', JSON.stringify({"username": username, "token": token}))
            return true;
          }
        },
        error2 => {
          return false;
        }
      );
  }

1 个答案:

答案 0 :(得分:2)

你对可观测量的态度是完全的。你的runLoginProcess函数没有返回任何东西,订阅函数根本不应该返回。你应该使用它的方式更像是

&#13;
&#13;
64 2e 65 78 65 fs cs gs js,pn 0x4010cb
&#13;
&#13;
&#13;

这样,您从帖子中获取响应,将其映射为布尔值,将该可观察序列返回给调用者,然后调用者订阅observable并在订阅中接收布尔值。

记住observable只是如何处理值流的定义。