等待服务的构造函数中的订阅

时间:2017-09-29 07:58:54

标签: angular rxjs

在我的服务中,我想等到本地变量baseurl没有被初始化,然后再发出另一个http请求。

以下是我的服务代码:

@Injectable()
export class CoursesService  {
  baseUrl;
  constructor(private http: Http) {
    if(this.baseUrl != undefined){
      this.getJSON().subscribe(data =>
        this.baseUrl=data, 
        error => console.log(error)
      );
    }
}

public getJSON(): Observable<any> {
  return this.http.get("assets/apiDetails.json")
                  .map((res:any) => res.json());
}

getCourses(){
  return this.http.get(this.baseUrl+"/courses")
    .map((res:any) => res.json());
  }
}

正如您所看到的getCourses方法使用baseUrl变量,因此当我调用getCourses方法时,我想等到baseUrl未初始化。

我尝试使用ngOnInit,但未在Injectable类型类中调用。

1 个答案:

答案 0 :(得分:7)

baseUrl变为您Observable的{​​{1}}(这么多来电可以使用相同的结果 - 它可以制作可观察的hot)并使用在你的其他电话。这样的事情应该有效:

share()