同步http post angular2

时间:2017-05-23 15:24:30

标签: angular typescript asynchronous

我有一个登录组件,用户输入它的电子邮件和密码。组件将字段发送到服务,我向nodejs后端发出http post请求,以了解用户是否存在以及密码是否正确。

问题是来自服务器的响应未定义,但我可以从chrome网络获取响应的值。

我认为问题是请求是异步的,因此它会在实际获得响应之前返回响应。

搜索后,我无法找到有关如何使请求同步的非常有用的信息。

以下是我的组件和服务的代码!

在我的组件中:

login_function(){
    this.token = this.global.check_login(this.login_user,this.login_pass)
        .subscribe(data => this.postData = JSON.stringify(data));
    console.log(this.token);}
}

在服务中:

check_login(user, pass) {
    let data = {user:user,password:pass};
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers, method:'post' });

    console.log("user:"+user+"\npass:"+pass);

    return this.http.post(url, {username:user,password:pass}, options)
        .map((response:Response)=> response.json());
  }

1 个答案:

答案 0 :(得分:1)

您正确地认为这是由于语句的异步执行。将组件代码更改为:

deleteProject(control, index) {
  control.removeAt(index)
}

服务应更新为以下代码: (假设您的服务器接受'用户'以及'密码'作为密钥)

login_function() {
    this.global.check_login(this.login_user, this.login_pass).subscribe(
      data => {
        console.log(data);
      });
 }