2016-10-04 110 views
2

我想知道是否有更好的方法(閱讀:更短)在Typescript/Angular2中編寫以下函數。我發現自己在很多情況下都會緩存可觀察的服務器數據,並返回緩存的值(如果存在)。我的方式(下)似乎有點矯枉過正。可觀察速記

getUser(){ 
    return Observable.create(s => { 
     if(!this.user) 
     this.connection.identity((err, res) => { 
      this.user = res; 
      s.next(res); 
      s.complete(); 
     }) 
     else{ 
     s.next(this.user); 
     s.complete(); 
     } 
    }); 
    } 
+0

應該不是你的實現是一個長一點?您似乎沒有處理錯誤。 – cartant

回答

0

這是有點短,甚至錯誤的處理:

import "rxjs/add/observable/of"; 
import "rxjs/add/observable/bindNodeCallback"; 
import { Observable } from "rxjs/Observable"; 
... 
getUser() { 
    return this.user ? 
    Observable.of(this.user) : 
    Observable.bindNodeCallback(
     this.connection.identity.bind(this.connection), 
     res => this.user = res 
    )(); 
} 
+0

一旦我從'rxjs/Rx導入我的Observable作爲導入{Observable},而不是從'rxjs/Observable'導入{Observable} – Christopher

+0

如果您還導入了希望創建的導入程序,則可以使用最小化的'Observable'導入使用。我已經用所需的進口更新了答案。 – cartant