如何在现有项目中引入反应式编程?

时间:2015-06-25 09:37:37

标签: reactive-programming rxjs

可能"主观"问题:将反应式编程(rxjs,培根等)引入现有的,老式的MVC-jquery"客户端应用程序?

例如,如果你在" API调用中引入它,那么Promises就会发挥最大的作用。应用程序的一个层(你可以一次做一个函数,返回Promise而不是接受回调 - 它们,一旦团队中的每个人都获得一些好处,它就会传播。)

从我能阅读的大部分教程中,我并没有真正看到rxjs最能发挥作用的地方。在小部件中(返回事件流而不是基于'基于监听器的' API?)

欢迎任何经验。

1 个答案:

答案 0 :(得分:1)

很难说它最能发光的地方......

对我来说,关键特性是,它允许以更具说明性的方式描述代码,而不是编写复杂的状态机(因为它在使用异步逻辑时经常发生)。

一般来说,它对于任何async都非常有用,例如在UI中,或者对于你所提到的关于Promises的API调用层实现,但更好(promise只是observable的有限版本,除了observable是懒惰的事实)。

在实施API调用层的情况下,与承诺相比,它至少具有以下好处:

  1. 对observable的订阅是可取消的(一次性的) - 例如,您可以在api结果的订阅之间切换,而不必担心以前的api请求的竞争条件......它就像results = queries.switchMap(q=>doApiCall(q))
  2. 一样简单
  3. 它可以使用相同的接口返回多个值 - 您可以轻松地使用订阅web-socket替换ajax调用,并且您无需更改使用此代码的代码。
  4. 更好的错误处理 - rx可以很容易地执行诸如在抛出错误之前重试操作n次或处理超时之类的事情。
  5. 我建议您观看Jafar Husain的Netflix JavaScript Talks - Async JavaScript with Reactive Extensions,有很多关于RxJS可以提供​​帮助的例子。可能它主要是你的问题的答案。