2017-10-15 28 views
0

我想在拨打this.start时每this.delay ms打电话this.cycle。 当然,这是行不通的:在setInterval中执行this.function

function Timer(delay, repetitions){ 
 
    this.delay = delay; 
 
    this.maxrep = repetitions; 
 
    this.rep = 0; 
 

 
    this.start = function(){ 
 
    this.interval = setInterval(function(){ 
 
     this.cycle(); 
 
    },this.delay); 
 
    } 
 

 
    this.cycle = function(){ 
 
    this.rep++; 
 
    console.log(this.rep); 
 
    if(this.rep >= this.max){ 
 
     clearInterval(this.interval); 
 
    } 
 
    } 
 
}

回答

0

一个问题,我可以看到的是,this定时器功能里面是不是这样,你认为它是。

因此,无论

var me = this 
this.start = function(){ 
    this.interval = setInterval(function(){ 
    me.cycle(); 
    },this.delay); 
} 

或者只是使用箭头功能

this.start = function(){ 
    this.interval = setInterval(() => this.cycle(), this.delay); 
} 
+0

谢谢!我不习惯箭头功能,这就是为什么。 – AlreadyAlreadyTaken

相关问题