如何首次获取http请求的数据?

时间:2016-12-01 17:19:30

标签: angular

我有角度2服务。 现在我必须从服务器获取一些对象,只有它们不存在。

因此,我第一次发出http请求,然后将数据存储在服务中定义的变量中。对于后续请求,我只是传递变量中的数据。

使用angular 2 styleObservables中执行此操作的理想方式。

2 个答案:

答案 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);

这只会调用一次订阅功能。