我有一个问题,我无法在我的函数中创建lambda函数。我有以下内容:
start(){
var idleTime = 0;
var idleInterval = this.$interval(timerIncrement, 1000);
$(document).on('mousemove keypress', function (e) {
idleTime = 0;
});
function timerIncrement(){
idleTime = idleTime + 1;
if (idleTime > 2) {
this.$interval.cancel(idleInterval);
this.Service.logout();
}
}
}
我希望函数timerIncrement
具有相同的范围,以便它可以取消idleTime
大于某个值时的间隔。现在,我无法从函数$interval
中访问timerIncrement
。有什么想法吗?
到目前为止,我已经尝试过这个:
function timerIncrement(){
return ()=> {
idleTime = idleTime + 1;
if (idleTime > 2) {
this.$interval.cancel(idleInterval);
this.Service.logout();
}
}
}
但是,返回的函数永远不会被调用。
答案 0 :(得分:1)
好吧,这并不难 - 我只需要将函数定义为变量。
var timerIncrement:Function = () => {
idleTime = idleTime + 1;
if (idleTime > 2) {
this.$interval.cancel(idleInterval);
this.Service.logout();
}
};
范围是正确的。
答案 1 :(得分:0)
为了完整起见,您还可以进行以下更改:
var idleInterval = this.$interval(timerIncrement.bind(this), 1000);
我不建议您使用它,但有时它可能会派上用场。