如何在函数中定义lambda函数?

时间:2016-02-03 07:48:17

标签: lambda typescript

我有一个问题,我无法在我的函数中创建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();
                }
            }
        }

但是,返回的函数永远不会被调用。

2 个答案:

答案 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);

我不建议您使用它,但有时它可能会派上用场。