Если я понял ваше требование, то это то, что вы хотите сделать:
Следите за cookie-файлом из метода this._cookieService.get()
, а если значение null/empty/undefined
, тогда направьте пользователя на страницу входа.и продолжайте наблюдать значение this._cookieService.get()
каждую 1 секунду.
Если мое понимание верно, то:
Я думаю, что вы можете достичь этого, используя только один поток, подобный этому:
const queryCookie = interval(1000)
.pipe(
switchMap(() => of(this._cookieService.get(COOKIE_STRING))),
//skipwhile will ensure to avoid timeout on starting of the page/app
skipWhile(cookie => !cookie)
);
queryCookie
.subscribe(
(val) => {
if (!val) {
this._router.navigate([''], {queryParams: {sessionTimedOut: true}});
}
},
(err) => {
console.log(err);
});
Кстати - я бы посоветовал не делать запросы каждую 1 секунду.Я предполагаю, что ваше приложение может установить cookie как null / empty / undefined в localStorage как-то.Если это так, то вы можете сделать свой код немного лучше, используя Subject / BehaviorSubject, и вы можете избежать запросов в 1 секунду.Это всего лишь наблюдение, так как я не знаю о дизайне вашего приложения.