Chaining Observables in RxJS

Ich lerne RxJS und Angular 2. Nehmen wir an, ich habe eine Versprechenskette mit mehreren asynchronen Funktionsaufrufen, die vom Ergebnis des vorherigen abhängen und wie folgt aussehen:

var promiseChain = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(1);
  }, 1000);
}).then((result) => {
  console.log(result);

  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(result + 2);
    }, 1000);
  });
}).then((result) => {
  console.log(result);

  return new Promise((resolve, reject) => {
      setTimeout(() => {
      resolve(result + 3);
        }, 1000);
  });
});

promiseChain.then((finalResult) => {
  console.log(finalResult);
});

Meine Versuche, dasselbe ausschließlich mit RxJS ohne die Verwendung von Versprechen zu tun, ergaben Folgendes:

var observableChain = Observable.create((observer) => {
  setTimeout(() => {
    observer.next(1);
    observer.complete();
  }, 1000);
}).flatMap((result) => {
  console.log(result);

  return Observable.create((observer) => {
    setTimeout(() => {
      observer.next(result + 2);
      observer.complete()
    }, 1000);
  });
}).flatMap((result) => {
  console.log(result);

  return Observable.create((observer) => {
    setTimeout(() => {
      observer.next(result + 3);
      observer.complete()
    }, 1000);
  });
});

observableChain.subscribe((finalResult) => {
  console.log(finalResult);
});

It liefert den gleichen Output wie die Promise Chain. Meine Fragen sind

Mache ich das richtig? Gibt es irgendwelche RxJS-bezogenen Verbesserungen, die ich am obigen Code vornehmen kan

Wie kann ich erreichen, dass diese beobachtbare Kette wiederholt ausgeführt wird? d.h. das Hinzufügen eines weiteren Abonnements am Ende ergibt nur eine zusätzliche 6, obwohl ich davon ausgehe, dass 1, 3 und 6 gedruckt werden.

observableChain.subscribe ((finalResult) => {console.log (finalResult);});

observableChain.subscribe ((finalResult) => {console.log (finalResult);});

1 3 6 6