我有角度2服务。 现在我必须从服务器获取一些对象,只有它们不存在。
因此,我第一次发出http请求,然后将数据存储在服务中定义的变量中。对于后续请求,我只是传递变量中的数据。
使用angular 2 style
在Observables
中执行此操作的理想方式。
答案 0 :(得分:0)
将您的http请求包装到可注射服务中并使用副作用运算符do(),例如,
@Injectable()
export class DataService{
mydata: Array[];
constructor(private http:Http){}
loadData(): Observable | any {
if (this.mydata){
return this.mydata; // return from cache
} else
{
return this.http.get("./mydata.json")
.map(res => res.json())
.do(data => this.mydata = data);
}
}
}
从组件中调用loadData()。只有当mydata为null时才会发出http请求。
答案 1 :(得分:0)
你可以这样做:
observable.first().subscribe(yourFunc);
这只会调用一次订阅功能。