start
создаёт таймер, который выполняет функцию нужное кол-во раз. Если дошли до конца, вызывается метод stop
, в котором происходит остановка таймера..function Worker(opts) {
// ...
this.start = function() {
//console.log(interval);
if (working) return;
position = 0;
timer = window.setInterval(function() {
//console.log('timer');
position += step;
on_step(position, from, to);
if (position >= to) {
console.log('end1');
self.stop();
}
}, interval);
on_start();
working = true;
on_step(position, from, to);
};
this.stop = function() {
сonsole.log('end2');
if (!working) return;
//console.log(timer);
window.clearInterval(timer);
working = false;
on_end();
};
// ...
}
stop()
- в консоль firebug пишет end1
, но end2
нет. Ошибок никаких не выводит.self.stop();
, и при этом переменная self не объявлена.this.start = function() {
//console.log(interval);
if (working) return;
position = 0;
timer = window.setInterval(function(self) {
//console.log('timer');
position += step;
on_step(position, from, to);
if (position >= to) {
console.log('end1');
self.stop();
}
}.bind(null, this), interval);
on_start();
working = true;
on_step(position, from, to);
};
this.start = function() {
//console.log(interval);
if (working) return;
position = 0;
timer = window.setInterval(function() {
//console.log('timer');
position += step;
on_step(position, from, to);
if (position >= to) {
console.log('end1');
this.stop();
}
}.bind(this), interval);
on_start();
working = true;
on_step(position, from, to);
};