我有一个在服务器的构造函数加载伙伴列表中的PartnersService。
this.partners = this._http.get('/app/partners/partners.data.json')
.map(this.extractData)
.catch(this.handleError);
当我得到合作伙伴列表时,一切正常。 但我需要通过ID获得合作伙伴。 在这种情况下,我使用带回调的函数
getPartner(id:number, callback:(partner:Partner)=>void):void {
this.partners.subscribe(partners=> {
for (let partner of partners) {
if (partner.id == id) {
callback(partner);
}
}
});
}
在浏览器控制台中,我看到任何时候我调用subscribe
,angular2向服务器发送请求。我可以做点什么,不随时发送请求吗?也许存在更好的方法来创建getPartner()
函数(没有回调)?
答案 0 :(得分:2)
你可以尝试类似的东西:
this.service.getPartner('some id').subscribe(partner => {
console.log(partner);
});
以这种方式执行方法:
gapi.client.calendar.events.list()
答案 1 :(得分:1)
您也可以使用publishLast()
来捕获事件。
constructor() {
this.partners = this._http.get('/app/partners/partners.data.json')
.map(this.extractData)
.catch(this.handleError)
//shares the subscription with all observers so you don't get repeated
//calls and caches the result.
.publishLast();
//Initiates the http call
this.connection = this.partners.connect();
}
getPartner(id:number):Observable<partner> {
return this.partners
//Convert Observable<partner[]> to Observable<partner>
.flatMap(x => x)
.filter(p => p.id === id);
}