等待Ionic中的订阅方法

时间:2018-12-08 15:03:10

标签: javascript angular typescript ionic2 ionic3

我在提供程序中有一个方法

getProfile() {
    let headers = new Headers();
    this.loadToken();
    headers.append('Authorization', this.authToken);
    headers.append('Content-Type','application/json');
    return this.http.get(this.db_url + 'profile',{headers: headers})
      .map(res => res.json());
  }

我在另一个提供商中调用上述方法

getProfile() {
    this.authService.getProfile().subscribe((profile: any) => {
      this.profile = profile.user._id;
    },(err : any) => console.log(err))
  } 

在这里,我想停止执行代码,直到执行this.profile = profile.user._id这行为止。在声明provider方法的同一getProfile()中,我的http请求为< / p>

let headers = new Headers();
    headers.append('Content-Type','application/json');
    let selected = {
      address: home.address, 
      date: new Date(),
      id: this.profile // from the getProfile() file.
    }

console.log(selected);

id的输出为undefined。我认为这里存在异步。

1 个答案:

答案 0 :(得分:1)

将此代码放入类似的函数中

setHeadres(){
 let headers = new Headers();
 headers.append('Content-Type','application/json');
 let selected = {
  address: home.address, 
  date: new Date(),
  id: this.profile // from the getProfile() file.
 }
}

并在getProfile()函数内部调用此函数,如下所示:

getProfile() {
 this.authService.getProfile().subscribe((profile: any) => {
   this.profile = profile.user._id;
   this.setHeaders();
 },(err : any) => console.log(err))
}