使用单选列表,其中值分别为5、15、20和30分钟。 默认情况下,选择15分钟。 现在,当选择5秒钟时,我需要不断检查功能。 当选择15秒单选按钮时,取消订阅可观察的5秒钟,并使用可观察的开始15秒钟的子订阅。
当应用程序在后台运行时,我需要不断检查上述情况,即选择了无线电列表值,并根据该值启动Observable。 感谢您的高级帮助。 我在使用离子框架,在哪里使用此代码,但是何时订阅和取消订阅?
this.timerOneHourSubscription = Observable.interval(15000)
.subscribe((val) => {
}
以下示例:
timerOneHourSubscription: Subscription;
constructor() {
this.showBadge();
}
}
/**
* This function allows to display badge on app icon
*/
showBadge() {
//by default one hour subscription
var refreshInterval =
localStore.getPersistedData(localApp.ISRADIOGROUP_KEY);
console.log('refreshInterval', refreshInterval);
this.timerOneHourSubscription = Observable.interval(refreshInterval)
.subscribe((val) => {
if (localStore.getPersistedData(localApp.ISRADIOGROUP_KEY) != null) {
if (localStore.getPersistedData(local.ISBADGE_ENABLED_KEY) != null) {
let badgeToggleEnable = local.getPersistedData(local.ISBADGE_ENABLED_KEY);
if (badgeToggleEnable) {
if (this.Items != null) {
if (localStore.getPersistedData(localApp.ITEMS_KEY) != null) {
this.Items = localStore.getPersistedData(localApp.ITEMS_KEY);
var count = 0;
for (let i = 0; i < this.Items.length; i++) {
var unRead= this.Items[i].unRead;
if (unRead) {
count++;
}
}
this.badge.set(unRead++);
}
}
}
else {
this.badge.clear();
}
}
}
});
}
答案 0 :(得分:0)
您可以使用以下方法清除您的订阅并调用新的订阅。
Observable.interval(15000).takeUntil(this.onDestroy$)
.subscribe(() => {
当您要销毁当前订阅并开始新的订阅时,这将为您提供帮助。
要销毁当前的,您可以在下面使用:-
this.onDestroy$.next();
您必须在页面顶部声明以下内容:-
private onDestroy$ = new Subject<void>();
请尝试发送一个方法并一次又一次调用同一方法,而不是在Observable中发送静态值。
答案 1 :(得分:0)
我找到了我的解决方案,然后选择了可取消订阅的单选按钮,然后重新启动
unSubscribetimerhourSubscription() {
this.timerhourSubscription.unsubscribe();
}