Вы можете эмулировать его следующим образом:
countDownLatch = {
count: 0,
check: function() {
this.count--;
if (this.count == 0) this.calculate();
},
calculate: function() {...}
};
, тогда каждый асинхронный вызов выполняет следующее:
countDownLatch.count++;
, в то время как в каждом асинхронном обратном вызове в конце метода вы добавьте эту строку:
countDownLatch.check();
Другими словами, вы эмулируете функцию обратного отсчета.