我决定在周末去this RxJS tutorial来学习有关反应式编程的知识。我们的目标是建立一个简单的页面,该页面使用Observables从Github用户API生成用户的交互式列表。
显示的列表是所检索用户总数的一个子集(在我的情况下为30个用户中的3个)。该列表需要可刷新(显示一组新用户),并且您需要能够通过单击每个相应条目上的“删除”按钮来从中删除条目。
我已经建立了一个Observable链来定义页面的行为。有些充当触发处理的事件,有些则发布处理后的结果以供应用程序使用。该链应该动态地导致我的列表被更新。当前,默认流程如下:
在启动时通过刷新列表并从列表中删除某些内容来触发列表更新。但是,当我刷新列表时,会发生这种情况:
如您所见,未触发更新用户列表的触发器。据我了解,通过在流的开始处发出一些值,流的其余部分应因此而执行。但是,这似乎只是我第一次遍历整个链条时发生。我想念什么?
您可以找到我的项目here的运行版本。
答案 0 :(得分:1)
我认为问题在于创建userStream$
可观察的方式。
过滤未关闭的用户,然后取前三个,可以直接在displayEvents$
通过filter
传递到管道链的UserModel []数组上完成和slice
的Array方法。
如果这样做,则无需使用from
函数来创建Observable<UserModel>
,然后必须在其上应用flatMap
(目前更称为{{ 1}})最终应用mergeMap
将其转换回UserModel数组。
换句话说,您可以像下面的示例中那样简化代码,其副作用是解决了刷新问题。
toArray
老实说,尽管我还没有完全理解为什么您的原始解决方案(这是一种漫长的绕道工作)不起作用。