首页 > 解决方案 > 从函数中返回 observable 的结果

问题描述

我有一个函数,我需要返回一个可观察的,因为它正在其他地方订阅,但是因为我的函数正在异步发出请求,然后尝试将该数据作为可观察的数据返回,所以它正在中断。

当前外观的示例:

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

但基本上这是破坏性的,因为它似乎在函数返回 observablesubscribeFunction()之前尝试订阅。userObservable()我在实现这一点的过程中遗漏了什么吗?我可以让它等待以确保第一个函数正确返回吗?

标签: rxjsobservable

解决方案


订阅 observable 后,它只能返回订阅,不能再返回 observable

但是,您可以使用 map/filter 等运算符来转换过滤您的用户对象并返回它

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

推荐阅读