我在 15 分钟空闲会话后实现注销,而不使用第 3 方库或 ngrx。
我创建了一个服务:
run(){
window.onload = () => {this.startTimer()};
window.onmousemove = () => {this.resetTimer()};
}
startTimer(){
let ticks = Observable.timer(0, 1000);
return ticks
}
resetTimer(){
// code here
}
sessionTimeOut(){
// logic to logout
this.resetTimer().subscribe(val =>{console.log(val)}
}
我使用一些方法创建了一些方法rxjs
功能,到目前为止,它们都没有工作,是否可以获得一些帮助resetTimer()
方法?谢谢。
你可以使用switchMap
在您的 mousemove 事件上重新启动计时器时,此路线无需跟上计时器值,只需插入 15000 即可设置并忘记。
const newTimer = () => Rx.Observable.timer(3000);
const mouseMove = Rx.Observable.fromEvent(document, 'mousemove')
.startWith("loaded")
.throttleTime(250);
const logOut = mouseMove.switchMapTo(newTimer());
logOut.subscribe(() => console.log('logout'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>
move mouse around here to not log out
从下面请求发出的评论中,我假设每秒发出一次,并且值重置为mousemove
.
const mouseMove = Rx.Observable.fromEvent(document, 'mousemove')
.startWith("loaded")
.throttleTime(250)
.do(() => console.log("restart timer"));
const newTimer = () => {
console.log("starting timer");
return Rx.Observable.timer(0, 1000);
};
const timer = mouseMove.switchMapTo(newTimer());
timer.subscribe(v => console.log(v));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)