Convert promise in angular 1 to observable in angular 2

I am still studying the observable in angular 2 and could not figure out how to convert my code in angular 1 to angular 2.

function promiseFunc() {
  var deferred = $q.defer();      

  $http.post(url, something)
    .then(function (response) {
      if (response === 1) deferred.resolve(response.data);
      else deferred.reject();
    }).catch(function (e) {
      deferred.reject(e);
    });

  return deferred.promise;
}    

Can someone tell me how can I convert this code with angular 2 observable?

EDIT:

But what if http.post is optional?

function promiseFunc(param1) {
  var deferred = $q.defer();      

  if (param1 === 1) {
    deferred.resolve(1);
  } else {
    $http.post(url, something)
      .then(function (response) {
        if (response.x === 1) deferred.resolve(response);
        else deferred.reject();
      }).catch(function (e) {
        deferred.reject(e);
      });
  }

  return deferred.promise;
}

What I am missing in the observable is the ability to challenge and reject. Can this be done in observable?

+4
source share
1 answer
someMethod() {
  if(param === 1) {
    return Observable.of(1);
  } else {
    return this.http.post(url, something)
    .map(
      response => {
       let data = response.json();
       if(data === 1) {
         return 1;
       }
       throw 'some error';
      }
    );
  }
}

then use it like

this.someMethod().subscribe(
  data => console.log(data),
  error => console.log(error),
  () => console.log('completed')
);     
+3
source

Source: https://habr.com/ru/post/1660369/


All Articles