【发布时间】:2016-12-12 02:31:09
【问题描述】:
我有一个使用 Angular 2 的 Ionic 2 开发的应用程序。
我想通过两种方式更新我的组件列表。
- 自动 - 如果没有更新或上次更新已更新,则刷新 30 多分钟前。
- 手动 - 如果用户不想等到下一次更新,他可以随时手动更新。
当用户离开页面时取消自动刷新,当他回来时重新初始化。我不想在用户进入页面时立即更新,而是在自上次更新后 30 分钟完成时才更新。
实现这一目标的最佳方法是什么?我想知道更新是否会发生冲突,如果是,如何取消所有并仅继续最后一次调用?
我是 Angular 2 的新手,对 Observables 有点困惑。这是我所拥有的:
import { Component } from '@angular/core';
import { Observable } from "rxjs/Observable";
import 'rxjs/add/operator/share';
import 'rxjs/add/operator/mergeMap';
import "rxjs/add/observable/interval";
import { NavController } from 'ionic-angular';
import { EventData } from '../../providers/event-data';
@Component({
selector: 'page-event-list',
templateUrl: 'event-list.html'
})
export class EventListPage {
public events = [];
private subscription;
constructor(public navCtrl: NavController, public eventData: EventData) {}
ionViewDidEnter() {
this.load();
}
ionViewDidLeave() {
this.cancel();
}
load() {
let observable = Observable
.interval(10000)
.flatMap(() => {
return this.eventData.load();
})
.share();
this.subscription = observable
.subscribe(events => this.events = events, error => console.log(error));
return observable;
}
reload(refresher) {
this.load()
.subscribe(null, null, () => refresher.complete());
}
cancel() {
if (this.subscription.closed) {
return;
}
this.subscription.unsubscribe();
}
}
【问题讨论】: