在我的服务中,我想等到本地变量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
类型类中调用。
答案 0 :(得分:7)
将baseUrl
变为您Observable
的{{1}}(这么多来电可以使用相同的结果 - 它可以制作可观察的hot)并使用在你的其他电话。这样的事情应该有效:
share()