从函数中返回可观察对象的结果

Returning out of a function the results of an observable

我有一个函数需要 return 一个可观察对象,因为它正在其他地方订阅,但是因为我的函数正在异步发出请求,然后尝试 return 该数据作为可以观察到它正在破裂。

当前外观示例:

function userObservable() {
   const select = 'select * from users';

   this.db.query(select).subscribe(users => {
      // apply some logic and filter to users here

      // function just returns users as an observable
      return asObservable(users);
   });
}

function subscribeFunction() {
  userObservable().subscribe(users => {
     // do whatever
  });
}

但基本上这是中断,因为它似乎在 userObservable() 函数 returned observable 之前尝试在 subscribeFunction() 中订阅。我在实现这个的过程中遗漏了什么吗?我可以让它等待以确保第一个函数 return 正常运行吗?

订阅 observable 后,它只能 return 订阅而不能再 return observable

但是您可以使用像 map/filter 这样的运算符来转换过滤您的用户对象和 return 它

  return this.db.query(select).pipe(map(users => {
      // apply some logic and filter to users here
      // function just returns users as an observable
      users=user.filter(........)
      return users
   }));