如何从内部具有 Observable 订阅的函数返回值?

新手上路,请多包涵

我不知道如何从 Observable 中提取值以由存在 Observable 的函数返回。我只需要从中返回一个值,仅此而已。

当前版本有效

function getValueFromObservable() {
    this.store.subscribe(
        (data:any) => {
            console.log(data)
        }
    )
}
getValueFromObservable()

我需要这个工作,函数返回值,然后:

 function getValueFromObservable() {
    this.store.subscribe(
        (data:any) => {
            return data
        }
    )
}
console.log(getValueFromObservable())

我在这里做错了什么?

原文由 Teddy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 869
1 个回答

我想检查数据是否存储在客户端上,或者我是否必须通过 API 调用从服务器获取数据。然后返回一个新的观察者并订阅它就可以了。第一次从服务器获取数据,之后返回 this.allUsers,因为我在调用 API 并返回数据后设置了这些数据。

     private _allUsers: EnconUser[] = undefined;
    get allUsers(): EnconUser[]
    {
      return this._allUsers;
    }
    set allUsers(value: EnconUser[])
    {
      this.storage.store('allUsers', value);
      this._allUsers = value;
    }

    public getAllUsers() : Observable<EnconUser[]>
    {
      if (this.allUsers == undefined)
      {
        return new Observable((obs) => {this.httpClient.get<EnconUser[]>(`http://api/getallusers`).subscribe(data=>{this.allUsers=data; obs.next(data); })});
      }
      else
      {
       return new Observable((obs) => {
        obs.next(this.allUsers);
        });
      }
    }

原文由 Mark 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进