在离子打字稿中订阅和取消订阅Observable

问题描述 投票:0回答:2

使用值为5,15,20和30分钟的无线电列表。默认情况下,选择15分钟。

现在我需要不断检查功能,选择5秒。当选择15秒单选按钮然后取消订阅可观察的5秒并使用Observable启动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();
                    }
                }
            }
    });
}
ionic-framework ionic3 observable subscribe
2个回答
0
投票

您可以使用以下内容清除订阅并致电新订阅。

Observable.interval(15000).takeUntil(this.onDestroy$)
      .subscribe(() => {

当您想要销毁当前订阅并开始新订阅时,这将帮助您。

要破坏当前的一个,你可以在下面使用: -

this.onDestroy$.next();

您必须在页面顶部声明以下内容: -

private onDestroy$ = new Subject<void>();

而不是在Observable中发送静态值尝试发送方法并一次又一次地调用相同的方法。


0
投票

我在选择任何radiobutton unsubscribe observable之前找到了我的解决方案并再次启动它

unSubscribetimerhourSubscription() {
  this.timerhourSubscription.unsubscribe();
}
© www.soinside.com 2019 - 2024. All rights reserved.