2016-10-04 24 views
2

Typescript/Angular2に次の関数を書くのに良い方法があるかと思います。私は、観察可能なサーバーデータをキャッシュし、キャッシュされた値が存在する場合はそれを返すという状況で、自分自身を何度も見つけました。私のやり方(下)はちょっと残酷すぎるようです。Observable Shorthand

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

「Observable」を「rxjs/Observable」から「rxjs/Observable」のインポートではなくrxjs/Rxからインポートしました。 – Christopher

+0

あなたが望むクリエイターもインポートすると、最小のObservableインポートを使用することができますつかいます。私は必要な輸入品で答えを更新しました。 – cartant