rxjs - 从函数中返回 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()
我在实现这一点的过程中遗漏了什么吗?我可以让它等待以确保第一个函数正确返回吗?
解决方案
订阅 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
}));
推荐阅读
- flutter - 为什么有时上下文被替换为下划线或“_”?
- spring-boot - 使用外部承载令牌以执行 REST API
- sonarqube - 错误:org.h2.jdbc.JdbcSQLException:找不到表“USERS”
- java - 我可以将所有这些功能放入一个枚举中吗?
- python - python 显示错误:错误绑定参数 0 - 可能是不受支持的类型
- python - 使用 Apscheduler 时出错。Skipped:已运行的最大运行实例数(10)设置max_instances无效
- php - Wordpress 上的代码 PHP 不适用于 PHP 8
- sql - JOIN 子句的括号
- java - Android 应用程序在调试模式下完美运行,但在运行模式下冻结 Java
- java - 如何从方法中的参数中获取值?