Rub*_*rgh 7 stream reactive-programming rxjs
RxJS README中的示例似乎表明我们必须订阅源代码.换句话说:我们等待源发送事件.从这个意义上说,来源似乎是基于推送的:来源决定何时创建新项目.
然而,这与迭代器形成对比,严格来说,只需要在请求时创建新项目,即在进行呼叫时next().这是pull-based行为,也称为懒惰生成.
例如,流可以返回所有维基百科页面的素数.这些项目仅在您要求时生成,因为预先生成所有项目都是一项投资,并且可能只有2或3项可能会被阅读.
RxJS是否也有这种基于拉的行为,因此只有在您要求时才生成新项目?
该反压页似乎表明,这是不可能的呢.
简短的回答是否定的。
RxJS是专为无功的应用程序,从而你已经提到的,如果你需要拉式的语义,你应该使用的Iterator,而不是一个Observable。Observables被设计为迭代器的基于推送的对应物,因此它们在算法上确实占据了不同的空间。
显然,我不能说这永远不会发生,因为这是社区将决定的事情。但据我所知 1)这种情况的语义并不是那么好,2)这与对数据做出反应的想法背道而驰。
一个很好的概要可以在这里找到。它适用于 Rx.Net,但这些概念同样适用于 RxJS。