пятница, 8 февраля 2019 г.

Rx.js - простые примеры.

Примеры работы библиотеки Rx.

Пример заполнения потока данными.

// Обработчик данных в потоке.
const observer = {
  next: value => console.log(value), // 1, 2
  error: error => console.error(error), //
  complete: () => console.log("completed") // completed
};

// Заполнитель потока данными.
const observable = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.complete();
})

// Связывания обработчика данных с заполнителем потока данными.
observable.subscribe(observer);


Пример заполнения потока данными и отписки от потока.

// Обработчик данных в потоке.
const observer = {
  next: value => console.log(value), // 0, 1, 2, 3, 4
};

// Заполнитель потока данными, возвращающий функцию отписки, вызов которой останавливает добавление данных в поток данных.
const timer = new Observable(observer => {
  let counter = 0; //объявляем счетчик
  const intervalId = setInterval(() => {
    observer.next(counter++); // передаем значение счетчика наблюдателю и увеличиваем его на единицу
  }, 1000);

  return () => {
    clearInterval(intervalId);
  }
});

// Связывания обработчика данных с заполнителем потока данными с возвратом функции отписки, вызов которой остановит добавление данных в поток данных.
const  timerSubscription = timer.subscribe(observer);

// Остановка через некоторое время заполнение потока данными с помощью функции отписки.
setTimeout(() => timerSubscription.unsubscribe(), 5000); // поток завершиться через 5 секунд из-за выполненного clearInterval(intervalId)

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

Отправить комментарий