angularrxjs

Convert Promise to Observable


I am trying to wrap my head around observables. I love the way observables solve development and readability issues. As I read, benefits are immense.

Observables on HTTP and collections seem to be straightforward. How can I convert something like this to observable pattern?

This is from my service component to provide authentication. I'd prefer this to work like other HTTP services in Angular2 - with support for data, error and completion handlers.

firebase.auth().createUserWithEmailAndPassword(email, password)
  .then(function(firebaseUser) {
    // do something to update your UI component
    // pass user object to UI component
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // ...
  });

The only alternative solution I had was to create EventEmitters. But I guess that's a terrible way to do things in services section


Solution

  • If you are using RxJS 6.0.0:

    import { from } from 'rxjs';
    const observable = from(promise);