2016-10-04 126 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