Qual é a diferença entre Promessas e Observáveis?

Qual é a diferença entre Promisee Observableem Angular? Um exemplo em cada um seria útil para entender os dois casos. Em que cenário podemos usar cada