这篇从我个人的角度聊聊ReactiveX这种思想的应用场景。
首先不论MVVM的使用场景,我也没有特别丰富的MVVM的使用经验。那么什么场景更加适合呢?
请求
如果只是单独的请求,那么也没有Reactive什么事情,但是当多个请求的时候,那么问题就来了。
多个请求就涉及到多次返回,那么如何组织这多次返回呢?可能有些场景要求按照发请求的顺序返回,有些场景可能仅需要任一个请求返回,又或者有些需要所有都返回的时候才触发回调,甚至可能有些请求存在依赖。
如何比较好的处理这些需求,那么Reactive本身就给我们一个很好的解决方案,可以说就是为了处理这种场景而生的。
流程
很多时候,我们的一个流程会非常长,比如注册、首次登陆等等,而这些流程可能中间的某些步骤是可以复用的,然而很多不同的步骤所需要的参数可能也会稍有不同,那么如何表示这种流程比较好呢?
把每一个步骤都做成Signal,那么这个问题就非常简单的解决了,不管流程的走向和分支是怎么样的,Reactive都能很好的解决,也不需要每一步都精心做好回调,然后把事件传递的到处都是。
总结
这就不得不提一下monad这个概念了,只要符合pure function操作的所有行为,其实都可以定义为signal,并且利用各种组合来解决一定的时序问题。