Подписаться и отписаться Наблюдаемый в ионной машинописи - PullRequest
0 голосов
/ 22 апреля 2019

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

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

Когда приложение находится в фоновом режиме, мне нужно постоянно проверять вышеописанный сценарий, какое значение списка радиостанций выбрано и на основе значения, которое мне нужно, чтобы запустить 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();
                    }
                }
            }
    });
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

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

unSubscribetimerhourSubscription() {
  this.timerhourSubscription.unsubscribe();
}
0 голосов
/ 22 апреля 2019

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

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

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

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

this.onDestroy$.next();

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

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

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

...