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