Използвам Moment.js за обработка на времето. 10 Inning обекти (продължителности) са правилно дефинирани с начален и краен час, както е показано в този въпрос е JSFiddle.
Този скрипт е предназначен да използва разликата между край време и настояще за дефиниране на необходимото Timeout
, което да бъде зададено, за да бъде извикана функция endInning()
. Това се изпълнява в рамките на цикъл за обработка на 10-те ининга.
for (x = 0; x < 10; x++) { // for each of ten defined innings
// calculate the difference between the end of inning x and now
timeTillEnd = moment(Game.innings[x].start).diff(moment(now),"milliseconds");
// and set the necessary delay
setTimeout(function () {
endInning(x);
}, timeTillEnd);
}
Въпреки това, вместо да доведе до забавяния, които се увеличават с 12 часа, всяко забавяне е едно и също.
Резултатът:
Завършва Ининг 1 в петък, 12:00 ч., 412712000 ms от сега.
Завършва Ининг 2 в петък, 12:00 ч., 412712000 ms от сега.
Завършва Ининг 3 в петък, 12:00 ч., 412712000 ms от сега.
...и така нататък до 10-ти ининг.
Каква е моята грешка и как мога да я поправя?
Редакции:
След като зададох въпроси, свързани с моите практики с този скрипт, смятам, че тези въпроси / отговори са свързани:
Затваряне на вътрешни цикли на JavaScript – прост практически пример
Защо не трябва да правя функции в рамките на цикъл в Javascript ?
И така въпросът ми става: Как мога да приложа тази практика за моята конкретна ситуация?