Выдавать значение, только если пользователь не подключен в течение указанного времени - PullRequest
0 голосов
/ 28 февраля 2020

Из бэкэнда я получил поток, в котором генерируется список активных идентификаторов пользователей. В моем сервисе 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, но как их объединить, я понятия не имею.

...