http通讯每次请求获得的都是上一次的值
来源:8-3 http通讯
Niweisi
2017-05-22
onLoggedin() {
let loginHeaders:Headers = new Headers();
let loginSearch:URLSearchParams = new URLSearchParams();
let value = this.formModel.value;
let loginUrl:string;
let dataSource:Observable<any>;
loginHeaders.append("Authorization","Basic 123456");//请求头
loginHeaders.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
loginSearch.append('username',value.username);
loginSearch.append('password',value.password);
loginSearch.append('code',value.code);
loginUrl = '/api/login';
//post请求
dataSource = this.http.post(loginUrl,loginSearch,{headers:loginHeaders}).map((res) => res.json());
dataSource.subscribe(
(data) => this.loginHttp = data
);
//问题在这里,每次输出loginHttp都是上一次的,并不是当前获取的,求解决
console.log(this.loginHttp['status']);
}写回答
1回答
-
把console.log写到回调里面,http请求是异步处理的,你上面那个回调还没执行呢,下面已经打日志了,当然打的是上一次的:
dataSource.subscribe(
(data) => {
this.loginHttp = data;
console.log(this.loginHttp['status']);
}
);
012017-05-24
相似问题