关于使用scheduleOnce递归调用的问题

因为延迟时间不定,所以想使用scheduleOnce实现一个方法的递归调用
例如
func : function(){
//计算time长短
this.scheduleOnce(this.func,time)
}
这样的话func确实可以调用一次,但是之后就调用不到了。请问是就是会这样的还是我使用的方式有问题呢?

另外我尝试了一种别的写法
func : function(){
this.func1 = function(){
this.scheduleOnce(this.func2,1)
}.bind(this)

    this.func2 = function(){
        this.scheduleOnce(this.func1,1)
    }.bind(this)

    this.func1()
}

这样写可以调用到func1,也可以1秒后从fun1调用到func2,但是从fun2调用到func1就不行了

可能得这么写

func: function () {
    // ...
    this.scheduleOnce(this.reschedule, 0);
}

reschedule: function (time) {
    // calculate time
    this.scheduleOnce(this.func, time);
}

// Start
this.scheduleOnce(this.func, time);

因为 scheduleOnce 对于正在调度的计时器不会重新调度

1赞

不如直接用setTimeOut直接了

好蛋疼的手法!!!!!

为什么不采用判断本次调用后不会持续调用的情况就允许新增调用呢?