И даже решениями для Шаблона разработки OO является конкретный язык. Шаблоны разработки являются решениями типичных проблем, которые Ваш язык программирования не решает для Вас. В Java Шаблон "одиночка" решает (упрощенную) проблему того. В Scala у Вас есть высокоуровневая конструкция под названием Объект в дополнение к Классу. Это лениво инстанцируют и существует только один. Вы не должны использовать Шаблон "одиночка" для получения Singleton. Это - часть языка.
Вся эта ситуация очень странная. На ум приходит только один сценарий, в котором браузер пытается «сгладить» период самовосстановления setTimeouts, как и для setInterval, и код, который делает это, фактически сбивает с толку таймеры в разных окнах с каждым из них. другое.
Я не знаю, возможно ли это, особенно с участием Facebook, но интересным тестом было бы присвоить каждому экземпляру случайное имя для функции countDown
и посмотреть, имеет ли это какое-либо значение, например:
<?php $timerTag = rand(1, 1000); ?>
function countDown<?php echo $timerTag ?>() {
...
setTimeout(function() { countDown<? php echo $timerTag ?>() }, 1000);
}
countDown<?php echo $timerTag ?>();
Если это изменит наблюдаемое поведение, это говорит в пользу сценария, который я имею в виду. (И, возможно, предоставляет способ решения проблемы.)