Как заменить абонент с наблюдателем?

голоса
0

Этот вопрос на GitHub в значительной степени подводит итог. I'am использования timer()с определенной периодичностью в 1 секунду для выполнения определенной задачи. Я пару его с Subscriberподписываться интервалы. Когда определенная модель исчерпывает данные, я отписать его и ждать новых поступлений. Когда данные заполняются снова, я пытаюсь снова подписаться , но он не работает. Оказывается , когда аги Subscriberбыли unsub'd, я не могу использовать его снова. Поэтому я должен заменить его Observer. Новичок здесь, я понятия не имею , как сделать это. пробовали смотреть на примеры, они просто путают меня дальше.

Как заменить следующий код функции с Observerвместо этого?

private timer = timer(1000, 1000);

// A timer subscription that keeps sending new images to the observer
timerSubscription = new Subscriber(() => {

    // Check if there is an element in the list
    if (this.head != null) {

      // If the current node at head is a folder, unsubscribe the listener
      if (this.head.data['id'].startsWith('folder')) {
        this.timerSubscription.unsubscribe();
      }

      // Pop a node from the list and pass on to observer
      this.observer.next(this.this$PiFrame.pop());

    } else {

      // If no nodes are left, unsubscribe from the timer
      this.timerSubscription.unsubscribe();

      console.log('No items left on the queue. Deactivating timer subscription.');
    }
  }, e => {}, () => {});

и я подписываюсь как так:

    ...
    // Setup a timer to pop every 1000 ms
    this.timer.subscribe(this.this$PiFrame.timerSubscription);
    ...
    // If no nodes are left, unsubscribe from the timer
    this.timerSubscription.unsubscribe();
    ...
Задан 02/09/2018 в 05:37
источник пользователем
На других языках...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more