Learn rxjs

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.8/rx.all.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.js"></script>
<pre id="counter"></pre>

TypeScript

const source = Rx.Observable.interval(1000);

const startDate = moment().add(1, 'minute');

const stream = Rx.Observable.merge(
  Rx.Observable.of(undefined),
  Rx.Observable.interval(10000)
).map(i => startDate);

Rx.Observable
  .combineLatest(source, stream)
  .map(([counter, value]) => {
  	return moment(value).diff(moment());
  })
  .distinctUntilChanged()
  .filter(value => value > 0)
  .subscribe(value => {
	  console.log(moment.utc(value).format('HH:mm:ss'));
  });