Angular 4订阅不返回值

时间:2018-02-17 08:55:59

标签: angular rxjs

我正在尝试在发出HttpClient post请求后从Angular 4服务中获取数据,我可以看到数据在订阅方法中返回,但我无法将其传递给方法中的其他变量;下面是我调用服务的组件的代码:

=========服务方法==============

    autheticateUser(name: string, pass: string)
  {  const info: any = {};
     info.userName = name;
     info.password = pass;

     return this._http.post<Itoken>(this.url, info)
                      .shareReplay()
                      .do((data)=> {this.jwtToken = data;});
      }

=============调用此服务的组件==========

 login() {
    this.flag = true;
    this.mode= 'indeterminate';
    this.authuser.autheticateUser(this.user.userName,this.user.password)
                  .subscribe((data)=> {this.localtoken = data;});
      console.log(this.localtoken); // No value this.localtoken variable

2 个答案:

答案 0 :(得分:0)

.subscribe()是异步的。因此,您不知道何时会触发它,如果您在subscribe()之外执行结果(例如您的console.log()),则可能尚未定义此结果。

正如@TheUnreal所说,将你的日志移到订阅中。这就是你想要使用它的方式:)

答案 1 :(得分:0)

在订阅中移动您的日志。例如这样的代码。

userResumeBio:any = [];

this.userresumeservice.getResume().subscribe((res: Response) => {
   console.log(res , 'User resume response');
   this.userResumeBio = res;
   console.log(this.userResumeBio , 'UserService userResumeBio response');
}, err=>console.log(err))