Javascript 可观察速记

Javascript 可观察速记,javascript,angular,typescript,Javascript,Angular,Typescript,我想知道是否有更好的方法(阅读:shorter)用Typescript/Angular2编写以下函数。我发现自己经常处于这样一种情况:缓存可观察的服务器数据,并返回缓存的值(如果存在)。我的方式(如下)似乎有点过分了 getUser(){ 返回可观察。创建(s=>{ 如果(!this.user) this.connection.identity((err,res)=>{ this.user=res; s、 下一步(res); s、 完全(); }) 否则{ s、 接下来(this.user);

我想知道是否有更好的方法(阅读:shorter)用Typescript/Angular2编写以下函数。我发现自己经常处于这样一种情况:缓存可观察的服务器数据,并返回缓存的值(如果存在)。我的方式(如下)似乎有点过分了

getUser(){
返回可观察。创建(s=>{
如果(!this.user)
this.connection.identity((err,res)=>{
this.user=res;
s、 下一步(res);
s、 完全();
})
否则{
s、 接下来(this.user);
s、 完全();
}
});
}

这稍微短一点,可以处理错误:

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

您的实现不应该再长一点吗?您似乎没有处理该错误。一旦我从'rxjs/Rx'以导入{Observable}的形式导入我的Observable,而不是从'rxjs/Observable'以导入{Observable}的形式导入,它就起作用了。如果您还导入了希望使用的创建者,您可以使用最小的
Observable
导入。我已经用所需的导入更新了答案。