Подписка и отмена подписки, наблюдаемые в ionic typescript

#ionic-framework #ionic3 #observable #subscribe

#ionic-framework #ionic3 #наблюдаемая #Подписка

Вопрос:

Использование списка радиосвязи, где значения равны 5, 15, 20 и 30 минутам. По умолчанию выбрано 15 минут.

Теперь мне нужно постоянно проверять функцию, когда выбрано значение 5 секунд. если выбран переключатель 15 секунд, то отпишитесь от observable на 5 секунд и запустите 15-секундную подписку, используя Observable.

Когда приложение работает в фоновом режиме, мне нужно постоянно проверять приведенный выше сценарий, какое значение списка радиостанций выбрано, и на основе значения, которое мне нужно для запуска Observable.

Я использую ionic framework (код ниже), когда подписаться и отказаться от подписки?

  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();
                    }
                }
            }
    });
}
  

Ответ №1:

Вы можете использовать следующее, чтобы очистить свою подписку и вызвать новую подписку.

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

Это поможет вам, когда вы захотите уничтожить текущую подписку и начать новую.

Чтобы уничтожить текущий, вы можете использовать ниже:-

 this.onDestroy$.next();
  

Вам нужно будет объявить нижеприведенное в верхней части вашей страницы:-

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

Вместо отправки статического значения в Observable попробуйте отправить метод и вызывать один и тот же метод снова и снова.

Комментарии:

1. Абхишек, спасибо.. Я использую typescript и ionic code

2. @AndroidGeeks: этот код будет работать в ionic и Typescript, потому что я использовал его и для себя.

3. @AndroidGeeks Если вы найдете это решение полезным, отметьте его, чтобы исправить, поскольку это может помочь другим в будущем.

Ответ №2:

Я нашел свое решение, прежде чем выбрать любую radiobutton, отменить подписку, наблюдаемую и запустить ее снова

 unSubscribetimerhourSubscription() {
  this.timerhourSubscription.unsubscribe();
}