Como forçar observáveis a serem executados em sequência?

Estou mudando do mundo da promessa para o mundo observável. Uma coisa que costumo fazer com o Promise é encadear uma série de tarefas e executá-las em sequência. Por exemplo, eu tenho três tarefas:printLog1() para imprimir 1 no console,printLog23() imprimir 2 e 3 no console eprintLog4() imprimir 4.

Quando quero imprimir 1-2-3-4, escrevia uma cadeia de promessas como

printLog1()
  .then(() => {
    printLog23();
  })
  .then(() => {
    printLog4();
  });

Agora quero a mesma funcionalidade com o Observable e posso reescrever oprintLog() funcionar em um observável como

printLog1 = Rx.Observabale.of(1).map((i) => console.log(i));
printLog23 = Rx.Observabale.of(2, 3).map((i) => console.log(i));
printLog4 = Rx.Observabale.of(4).map((i) => console.log(i));

Então eu tenho três observáveis que emitem valores diferentes para o console. Como encadeá-los para que esses três observáveis funcionem em ordem e imprimam1-2-3-4?

questionAnswers(1)

yourAnswerToTheQuestion