Как установить тайм-аут локального хранилища Angular 2 - PullRequest
0 голосов
/ 09 мая 2018

У меня есть проект Angular 2/5 с переменными входа и сеанса. я нуждаюсь что-то вроде тайм-аута .Net сессии на локальном хранилище. Как я могу это сделать?

1 Ответ

0 голосов
/ 10 мая 2018

Привет, у меня была такая же проблема, и я решил ее следующим образом:

// rxjs V6

import {Injectable} from "@angular/core";
import { Observable,timer, interval, of, Subject } from 'rxjs';
import { tap, map, share, switchMap, distinctUntilChanged} from rxjs/operators';
import * as moment from 'moment';

        @Injectable()
        export class ClockService {
          private interval = 1000;//1sec
          private countDown$:Observable<boolean>;
        public starter: Subject<number> = new Subject();

            public countdown(start:number):Observable<boolean>{

            this.setCountdown(start);
            return this.countDown$;

          }

        private setCountdown(_start:number){

    let start =moment().add(_start, 's').unix();

    this.countDown$= interval(this.interval).pipe(
    map(tick => start - moment().unix()),
    map(tack=>tack==0? true : false),
    distinctUntilChanged(),
    share()
    );

  }

, а затем в ваших компонентах

  this.countService.starter.pipe(
    switchMap((start)=>this.countService.countdown(start)))
.subscirbe(tick=>tick? /* clean localSotrage */ : /* do nothing */)

после каждого запроса

this.countService.starter.next(10*60*1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...