带计数的setInterval()

时间:2013-08-27 02:13:16

标签: javascript setinterval

如果可能,我想使用count删除self.addOrbitTrap()中的参数。在测试时我的代码做了类似的事情:

Bbrot.prototype.findMSet = function() {
    //...code
    var self = this;
    canvasInterval = setInterval(function() {
        self.addOrbitTrap();
    }, 0);
}

var count = 0;
Bbrot.prototype.addOrbitTrap = function() {
    //...code
    if (count === 100) {
        // Call a different function. That's why I use count
    }
    count++;
}

修改:更具体地说,我的代码中使用了count来计算addOrbitTrap() 成功运行的次数(它不会如果随机选择的像素是Mandelbrot集的一部分,则添加轨道陷阱。在它运行了很多次后,我调用了一个不同的函数(来自addOrbitTrap()内)。我宁愿不使用全局变量,因为count在其他任何地方都没有使用过。

2 个答案:

答案 0 :(得分:1)

只需在对象上创建变量并使用它。

Bbrot.prototype.count = 0;
Bbrot.prototype.findMSet = function() {
    //...code
    var self = this;
    canvasInterval = setInterval(function() {
        self.addOrbitTrap();
    }, 0);
}

Bbrot.prototype.addOrbitTrap = function() {
   if(ranSuccessful)
      this.count++;
}

Bbrot.prototype.someOtherFunc = function() {
    return this.count;
}

答案 1 :(得分:1)

您可以将count作为findMSet中传递给addOrbitTrap()的本地变量引入;在每个时间间隔,该值将增加:

Bbrot.prototype.findMSet = function() {
    //...code
    var self = this,
    count = 0;

    canvasInterval = setInterval(function() {
        self.addOrbitTrap(++count);
    }, 0);
}

处理价值很简单:

Bbrot.prototype.addOrbitTrap = function(count) {
    //...code
    if (count === 100) {
        // Call a different function. That's why I use count
    }
}