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回答

JoJo

2017-05-24

把console.log写到回调里面,http请求是异步处理的,你上面那个回调还没执行呢,下面已经打日志了,当然打的是上一次的:


dataSource.subscribe(

          (data) => {

            this.loginHttp = data;

             console.log(this.loginHttp['status']);

    }

);

        

       


0
1
Niweisi
非常感谢!
2017-05-24
共1条回复

Angular4.0从入门到实战 打造股票管理网站

Angular新特性,教你熟练使用 Angular 和 Typescript 开发组件式单页应用

2683 学习 · 1361 问题

查看课程