Пример заполнения потока данными.
// Обработчик данных в потоке.
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)
Комментариев нет:
Отправить комментарий