3

Wanted to convert following service to Angular 2 Service. I am using google api here. The main problem I am getting is to returning the Promise as its not similar as Angular 1.x.

 getLoginStatus: function () {
      var deferred = $q.defer();
      gapi.auth.authorize({client_id: dataStore.getData('CLIENT_ID'), scope: dataStore.getData('SCOPES'), immediate: true},function(response){
      var res = {};
           res = response;
           deferred.resolve(res);
      });
      return deferred.promise;
 }
Mark Rajcok
  • 362,217
  • 114
  • 495
  • 492

1 Answers1

5

Angular 2 uses RxJS 5 Observables for this:

Here is a 1:1 translation of your code:

getLoginStatus: function () {
      return new Observable(function(observer) {
      gapi.auth.authorize({client_id: dataStore.getData('CLIENT_ID'), scope: dataStore.getData('SCOPES'), immediate: true},function(response){
           observer.next(response);
           observer.complete();
      });
 }
Benjamin Gruenbaum
  • 270,886
  • 87
  • 504
  • 504
  • (For what it's worth, you can still use promises just fine). – Benjamin Gruenbaum Dec 26 '15 at 22:13
  • i have tried to use this but not succeed. i have never used Observer. i am using something like this getLoginStatus() { return new Promise((resolve,reject) => gapi.auth.authorize({ client_id: this._dataStore.getData('CLIENT_ID'), scope: this._dataStore.getData('SCOPES'), immediate: true }, resolve)); } – Kumar Ranjan Dec 28 '15 at 09:10