如何在函数中定义lambda函数?
我有一个问题,我不能在我的函数中创建lambda函数。我有以下资料:如何在函数中定义lambda函数?,lambda,typescript,Lambda,Typescript,我有一个问题,我不能在我的函数中创建lambda函数。我有以下资料: start(){ var idleTime = 0; var idleInterval = this.$interval(timerIncrement, 1000); $(document).on('mousemove keypress', function (e) { idleTime = 0; }); functio
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
大于某个值时取消间隔。现在,我无法从函数timerIncrement
中访问$interval
。有什么想法吗
到目前为止,我已经尝试过:
function timerIncrement(){
return ()=> {
idleTime = idleTime + 1;
if (idleTime > 2) {
this.$interval.cancel(idleInterval);
this.Service.logout();
}
}
}
然而,return中的函数从未被调用。好吧,这并不难——我只需要将函数定义为变量
var timerIncrement:Function = () => {
idleTime = idleTime + 1;
if (idleTime > 2) {
this.$interval.cancel(idleInterval);
this.Service.logout();
}
};
而且范围是正确的。为了完整起见,您还可以进行以下更改:
var idleInterval = this.$interval(timerIncrement.bind(this), 1000);
我不推荐它用于您的用例,但有时它可能会派上用场