Angular 更新源时有 2 个可观察到的变化
Angular 2 observable changes when source is updated
现在我正在尝试根据这篇文章写一个 rss reader:
https://www.becompany.ch/en/blog/2016/09/19/angular2-rss-reader
正如我所见,提要来自:
return this.http.get(this.rssToJsonServiceBaseUrl + url)
.map(this.extractFeeds)
.catch(this.handleError);
是否可以实时绑定?我的意思是,如果将新的 item/news 发布到提要,那么我使用结果的组件将自动更新......
我正在考虑它,因为 angularfire2 能够进行这种实时绑定,所以当它背后的数据库是 updated/modified 时,我的视图只是刷新而没有任何 navigation/browser 刷新..
谢谢。
(正如我所看到的,当我在模板中使用带有 |async 管道的 observable 本身时,有一个选项......不幸的是我在 Angular2 中找不到关于 Observable 本身的合适文章......人们总是比较它到其他我不知道的东西..)
虽然Http不是双向通道,你可以定期拉取,这样的事情应该很容易:
const FETCH_INTERVAL = 30000; // pull every 30 secs
class MyService {
public myFeeds: Observable < Feed[] >
constructor(private http: Http) {
this.myFeeds = Observable.timer(0, FETCH_INTERVAL)
.switchMap(() => this.http.get(this.rssToJsonServiceBaseUrl + url))
.map(this.extractFeeds.bind(this))
.catch(this.handleError.bind(this))
.share(); // share to avoid recreating an observable on every subscribtion
}
private extractFeeds(resp: Response): Feed[] {
// do stuff (check for duplicates, etc...)
return feeds;
}
private handleError(err) {
// do stuff
}
}
现在我正在尝试根据这篇文章写一个 rss reader: https://www.becompany.ch/en/blog/2016/09/19/angular2-rss-reader
正如我所见,提要来自:
return this.http.get(this.rssToJsonServiceBaseUrl + url)
.map(this.extractFeeds)
.catch(this.handleError);
是否可以实时绑定?我的意思是,如果将新的 item/news 发布到提要,那么我使用结果的组件将自动更新...... 我正在考虑它,因为 angularfire2 能够进行这种实时绑定,所以当它背后的数据库是 updated/modified 时,我的视图只是刷新而没有任何 navigation/browser 刷新..
谢谢。
(正如我所看到的,当我在模板中使用带有 |async 管道的 observable 本身时,有一个选项......不幸的是我在 Angular2 中找不到关于 Observable 本身的合适文章......人们总是比较它到其他我不知道的东西..)
虽然Http不是双向通道,你可以定期拉取,这样的事情应该很容易:
const FETCH_INTERVAL = 30000; // pull every 30 secs
class MyService {
public myFeeds: Observable < Feed[] >
constructor(private http: Http) {
this.myFeeds = Observable.timer(0, FETCH_INTERVAL)
.switchMap(() => this.http.get(this.rssToJsonServiceBaseUrl + url))
.map(this.extractFeeds.bind(this))
.catch(this.handleError.bind(this))
.share(); // share to avoid recreating an observable on every subscribtion
}
private extractFeeds(resp: Response): Feed[] {
// do stuff (check for duplicates, etc...)
return feeds;
}
private handleError(err) {
// do stuff
}
}