【发布时间】:2022-01-24 19:40:48
【问题描述】:
我正在创建一个需要执行几个步骤的可观察对象,每个步骤都依赖于前一个步骤 - 例如获取 ID,使用该 ID 获取用户,使用该用户获取文章。每个步骤都会调用数据库,而数据库又会返回自己的 observable。我真的不知道如何处理嵌套的可观察对象而不订阅它们,或者确保当外部可观察对象被订阅时,最终所有嵌套的可观察对象也被订阅。
例子:
newArticle(article: Article): Observable<any> {
// db api returns an observable of requests
return this.db.get(`select id from user_ids where name = ${article.name}`).pipe(map((id) => {
return this.db.get(`select user from users where user_id = ${id}`).pipe(map((user) => {
return this.db.put(`insert into articles(user_name, title, content) values (${user.name}, ${article.title}, ${article.content});
}));
}));
}
使用这个当前方法不起作用,当从newArticle 返回的 observable 被订阅时,似乎只有最外层的 observable 被订阅并执行。在处理嵌套的 observables 的方式上我是否缺少一些东西?我对 rxjs 比较陌生,很难完全掌握 observables。任何帮助将不胜感激。
【问题讨论】:
标签: rxjs observable