下面这个图讲的就是从Observable订阅消息, 并且在Observer里面处理它们:
Observable允许:
订阅/取消订阅它的数据流
发送下一个值给Observer
告诉Observer发生了错误以及错误的信息...错误处理
Observable是会发生错误的, 如果错误被发送到了Observer的话, 整个流就结束了.
但是做Reactive编程的话, 有一个原则: Reactive的程序应该很有弹性/韧性....也就是说, 即使错误发生了, 程序也应该继续运行.
但是如果error function在Observer被调用了的话, 那就太晚了, 这样流就停止了....那么如何在error到达Observer之前对其进行拦截, 以便流可以继续走下去或者说这个流停止了,然后另外一个流替它继续走下去?...效果:
BehaviorSubject
BehaviorSubject 是Subject的一个变种, 它有一个当前值的概念, 它会把它上一次发送给订阅者值保存起来, 一旦有新的Observer进行了订阅