我对angular和rxjs很新。 我正在尝试创build一个angular2应用程序,从静态提供的文本文件(本地服务器)获取一些数据,我希望使用Angular2的http提供程序和rxjs的映射以固定的时间interval(5000)检索并映射到Datamodel。 反映对提供的txt文件的任何更改。 使用rxjs 4.x我知道你可以使用Observable.interval(5000)来完成这个工作,但似乎并不存在于rxjs中5.我的解决方法是使用<meta http-equiv="refresh" content="5" >刷新整个应用程序<meta http-equiv="refresh" content="5" >重新加载整个页面,从而重新加载数据。 所以我真正喜欢的是用observables来做这个工作,也许去检查是否有任何变化。 或者只是重新加载数据。 任何帮助或其他/更好的方式将非常感激。 我到目前为止: @Injectable() export class DataService { constructor(private http:Http){} getData(url) { return this.http.get(url) .map(res => { return res.text(); }) .map(res => { return res.split("\n"); }) .map(res => { var dataModels: DataModel[] = []; res.forEach(str => { var s = str.split(","); if(s[0] !== […]
通过使用Http,我们调用一个方法来进行networking调用并返回一个http observable: getCustomer() { return this.http.get('/someUrl').map(res => res.json()); } 如果我们把这个可观察的,并添加多个用户: let network$ = getCustomer(); let subscriber1 = network$.subscribe(…); let subscriber2 = network$.subscribe(…); 我们想要做的是确保这不会导致多个networking请求。 这可能看起来像一个不寻常的场景,但其实很常见:例如,如果调用者订阅observable以显示错误消息,并使用asynchronouspipe道将其传递到模板,则我们已经有两个订阅者。 在RxJs 5中做这件事的正确方法是什么? 也就是说,这似乎工作正常: getCustomer() { return this.http.get('/someUrl').map(res => res.json()).share(); } 但这是RxJs 5中这种做法的惯用方式,还是我们应该做一些其他的事情?