我有一个登录组件,用户输入它的电子邮件和密码。组件将字段发送到服务,我向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());
}
答案 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);
});
}