gpt4 book ai didi

javascript - angular2 使用 Observable(Http) 无需重新加载

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:54 24 4
gpt4 key购买 nike

我有一个 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() 函数(无回调)的更好方法?

最佳答案

你可以尝试这样的事情:

getPartners() {
if (this.partners) {
return Observable.of(this.partners);
} else {
return this._http.get('/app/partners/partners.data.json')
.map(this.extractData)
.catch(this.handleError)
.do(partners => {
this.partners = partners;
});
}
}

getPartner(id:number):Observable<partner> {
this.getPartners().map(partners => {
return partners.find(partner => (partner.id == id));
});
}

并以这种方式执行方法:

this.service.getPartner('some id').subscribe(partner => {
console.log(partner);
});

关于javascript - angular2 使用 Observable(Http) 无需重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com