【发布时间】:2018-10-09 19:17:57
【问题描述】:
我在我的应用程序中看到一个常见模式,其中函数返回不需要提供 next() 值(即 save())但可能是 Observable 链的一部分的 Observable。
在这个工作示例(下面的链接)中,我有一个演示 BookService 和 save() 和 getBooks()。代码示例保存 2 本书,从服务和控制台获取书籍。通过单个可观察链记录书籍。
我已经尝试了这两个选项:
选项 1:
save(title: string): Observable<never>返回EMPTY。这意味着永远不会调用订阅者的next()。为了让可观察链继续使用单个值,我在调用save()之后pipe(defaultIfEmpty(true))。专业版:功能有效,只需调用
complete()。save()不需要返回没有意义的值。Con:调用
defaultIfEmpty(true)链接 observable 看起来并不直观。
选项 2:
save(title: string): Observable<boolean>返回值of(true)。函数有效,next()和complete()都将被调用一次。专业人士:无需
defaultIfEmpty(true)链接 observable。Con:总是调用
next()。这算不算骗局?
选项 3:
- 如果有更好的方法,请告诉我。
code example 提供选项 1 和选项 2(已注释)。
问题:像save() 这样的函数应该返回什么?是否有关于此类场景的可观察设计的书面文档/文章?
感谢您对此的看法。
【问题讨论】:
-
这只是您的特定用例,因此可能不会有任何官方指南。
标签: typescript rxjs