Я ищу решение ООП, чтобы один и тот же литерал / класс объекта выполнялся параллельно или во вложенном виде, не мешая переменным других экземпляров.
Я создал демо в jsfiddle с несколькими кнопками для отображения желаемой функциональности, я попытался передать идентификатор для независимого вызова действий setTimeout, но я понимаю, что все переменные также совместно используются разными экземплярами
(function( skillet, $, undefined ){
var t;
var timer_is_on = 0;
var startingPoint = 0;
var endingPoint = 99;
var timerLapse = 1000;
var timerMatrixIndex = 0;
var timerMatrix = [1000];
var callback;
function timedCount(timerLapse) {
console.log(timerMatrix[timerMatrixIndex]);
if (startingPoint > endingPoint || timer_is_on === 0) {
clearTimeout(t[timerId]);
skillet.stopCount();
} else {
document.getElementById("txt").value = startingPoint;
if (timerMatrixIndex+1 < timerMatrix.length) {
timerMatrixIndex++;
}
startingPoint++;
callback();
t = { timerId: setTimeout( function() {timedCount(timerMatrix[timerMatrixIndex]);} ,timerLapse) };
}
}
skillet.startCount = function(options) {
options = options || {};
startingPoint = options.startingPoint || 0;
endingPoint = options.endingPoint || 100;
timerMatrix = options.timerMatrix || [1000];//[ 25,25,50,50,50,100,100,100,150,150,200,200,300,400,500,600,700,800,1000 ];
timerId = options.timerId || 0;
callback = options.callback || function(){};
timerMatrixIndex= 0 ;
if (!timer_is_on) {
timer_is_on = 1;
timedCount(timerMatrix[0]);
}
}
skillet.stopCount = function() {
clearTimeout(t[timerId]);
timer_is_on = 0;
}
}( window.skillet = window.skillet || {}, jQuery ))
Я ищу элегантный способ, не просто добавив myid ко всем методам или свойствам, возможно, я должен был создать класс вместо литерала объекта, а просто изучаю Javascript OOP.
Это простой способ сделать это?
https://jsfiddle.net/phrad/ut4yde9p/1/
Как и в примере, «количество обратных вызовов myid» должно быть независимым от других экземпляров с использованием значения по умолчанию (без идентификатора)
Прямо сейчас каждый вызов обнуляет параметры предыдущего вызова