Из бэкэнда я получил поток, в котором генерируется список активных идентификаторов пользователей. В моем сервисе angular мне нужно создавать наблюдаемое и выдавать значение, когда есть пользователь, который находится в автономном режиме, скажем, в течение 5 с.
Мой сервис пока:
public constructor(private userService: UserService) {
const userGetOffline = userService.activeUserIds$
.pipe(
pairwise(),
map(([prev, curr]) => {
let offlineCount = 0;
prev.forEach(prevItem => {
if (!curr.includes(prevItem)) {
offlineCount++;
}
});
return offlineCount > 0;
}),
filter(offline => offline),
tap(_ => console.log("User get offline"))
);
const userGetOnline = userService.activeUserIds$
.pipe(
pairwise(),
map(([prev, curr]) => {
let onlineCount = 0;
curr.forEach(currItem => {
if (!prev.includes(currItem)) {
onlineCount++;
}
});
return onlineCount > 0;
}),
filter(online => online),
tap(_ => console.log("User get offline"))
);
}
И сейчас я застрял. Я могу создать наблюдаемое, когда некоторые пользователи переходят в онлайн / офлайн, но я не могу придумать, как их объединить и генерировать, только когда пользователь находится в автономном состоянии в течение 5 секунд. Я знаю, что мне понадобится debounceTime, но как их объединить, я понятия не имею.