2015-12-23 23 views
3

想要將以下服務轉換爲Angular 2服務。我在這裏使用谷歌API。我得到的主要問題是將Promise作爲與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; 
} 

回答

5

角2使用RxJS 5 Observables此:

這裏是一個1:你的代碼的1翻譯:

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(); 
     }); 
} 
+0

(對於它的價值,你仍然可以使用的承諾就好了)。 –

+0

我試圖使用這個,但不成功。我從來沒有使用過觀察者。我使用類似這樣的getLoginStatus(){ 返回新的Promise((resolve,reject)=> gapi.auth.authorize({client_id:this._dataStore.getData('CLIENT_ID'),scope:this._dataStore.getData 'SCOPES'),immediate:true},resolve)); } –