- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在学习 ReactiveX。我删除了错误检查、日志记录和其他部分,以便于阅读。
我有一个以 JSON 格式返回对象集合的服务:
getPanels() {
return this.http.get(this._getPanelsUrl)
.map(panels => <Panel[]> panels.json());
}
我的组件调用服务方法并将数据存储在数组中:
panels: Panel[] = [];
ngOnInit(){
this._PanelService.getPanels()
.subscribe(data => this.panels = data);
}
目标是在我的模板中分组显示这些数据:
<ol>
<li *ngFor="#panel of panels">
<h3>{{panel.startDate}}</h3>
</li>
</ol>
现在我想添加分页并一次只显示三个或四个面板。
我的第一个想法是使用 bufferCount 来分组发射对象:
getPanels() {
return this.http.get(this._getPanelsUrl)
.map(panels => <Panel[]> panels.json())
.bufferCount(3,3);
}
现在我有一个多维数组,所以我必须相应地更新组件:
panels: Array<Panel[]> = [];
ngOnInit(){
this._PanelService.getPanels()
.subscribe( data => this.panels = data );
}
我想我会得到一个漂亮而整洁的数组,每个索引都包含集合中的三个成员。我错了,整个集合现在都存储在 data[0] 中。接下来,我尝试稍微调高链条:
getNextPanel() {
return this.http.get(this._nextPanelUrl)
.bufferCount(3,3)
.map(res => <Panel[]> res.map(r => <Panel> r.json()));
}
哇。在这一点上,我显然需要有人来拯救我。看看我的 lambda!此时数据甚至不会一路流回组件。这是我开始思考的时候也许我不需要学习如何以 ReactiveX 的方式做到这一点......
我的下一个类(class)是尝试使用 Angular 迭代这些值。我尝试在切片管道中使用一些变量:
<ol>
<li *ngFor="#panel of (panels | slice:start:items)">
<h3>{{panel.startDate}}
</li>
</ol>
<button (click)="start = start + start"></button>
尽管 Angular 2 仍处于测试阶段,但当解析器一直对我咆哮说我在不该使用的运算符和表达式时,我可以看出我已经厌倦了。
我已准备好从这些错误中吸取教训,以便犯下更大的错误。有什么建议吗?
[编辑]
我决定使用 ng2-pagination,因为它完全符合我的要求。但是,我不会将其作为答案发布,因为我仍然想尝试使用 rxjs 来实现它。
因此,如果您已经走到这一步,并且您只需要一些有用的东西,那么 ng2-pagination(在撰写本文时处于 beta 2 中)效果很好。
最佳答案
真的很晚,但我希望这可以帮助其他人解决这个问题。
我认为您的实现存在问题,您正在使用订阅者上的每个 onNext 事件覆盖 this.panel 变量。
有了这个改变,应该会按预期工作:
getPanels() {
return this.http.get(this._getPanelsUrl)
.map(panels => <Panel[]> panels.json())
.bufferCount(3)
.toArray();
}
然后:
panels: Panel[][] = [];
ngOnInit(){
this._PanelService.getPanels()
.subscribe( data => { this.panels = data } );
}
想法是将所有 onNext 事件合并到一个数组中(使用 toArray 方法),该数组将作为新 Observer 的单个 onNext 发出,并将包含所有事件。
关于Angular2 和 ReactiveX 的分页思路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35638203/
我想从树中创建一个可观察对象。每个节点都会生成一个依赖于其父节点的可观察对象(例如通过 switchMap)。在树的每一层,每个 child 的可观察值都需要合并。 我想转换这段代码,以便它使用可观察
RxJS Observables 是可以随时间同步或异步返回零到无限值的函数。 但是异步行为究竟是如何实现的呢?它是以某种方式使用单独的线程,还是使用 Web API 和 JS 事件循环? 最佳答案
我正在学习 Rx(尤其是 RxSwift),我对架构、层和边界有疑问。 我习惯于分层架构(数据、域、表示),通常是在 MVP 或 VIPER 上。对于这个项目,我使用的是 MVVM,这是 Reacti
我正在使用 Rx.Net 并且我有 Observable 发出时间序列点( double ,时间戳)。每次新点到达时,我想计算过去 30 秒的平均值。我想我需要某种不是基于计数而是基于时间戳的重叠窗口
public class ReactiveExample { public static void main(String[] args) throws InterruptedExceptio
我正在尝试制作带有背压的流动性。我的想法是,在当前项目之一完成处理之前,不会发出新的可流动项目。我正在使用 ResourceSubscriber 和 subscribeWith() 方法来实现这一点。
我很好奇谁开始了 ReactiveX/RxJS? Rx 似乎在很多语言/平台中实现,我很好奇它的起源是什么?首先是哪个项目? RxJS 在 Angular Web 框架中大量使用。它背后是否有像微软、
我试图使用 RxJava 来理解 ReactiveX,但我无法理解整个 Reactive 的想法。我的案例如下: 我有 Task 类。它有 perform() 方法,该方法执行 HTTP 请求并通过
我如何利用 ReactiveX按顺序执行异步调用?即,在第一个调用完成后执行第二个调用。 更具体地说,我正在使用 RxSwift在 iOS 中,我想链接在一起的异步是 UIView 动画(而不是在第一
我在我的 iOS 应用程序中使用 RxSwift 进行缓存,并且有一段这样的代码: let observable = Observable.of(cache.getItem(itemID), netw
我正在使用 ReactiveX在 iOS/Swift 中(RxSwift)。 假设我有一个可观察对象: let dataUpdates = ... 我订阅的: dataUpdates.subscrib
我正在学习 ReactiveX。我删除了错误检查、日志记录和其他部分,以便于阅读。 我有一个以 JSON 格式返回对象集合的服务: getPanels() { return this.http
寻找一种干净的方式来转换源 Observable发出单个 null (或哨兵值)在一段时间内不发射项目后。 例如,如果源 observable 发出 1, 2, 3然后停止发射 10 秒,然后发射 4
我想知道在 Rx 中解决以下问题的规范方法是什么:假设我有两个可观察对象,mouse_down和 mouse_up ,其元素表示鼠标按钮按下。在一个非常简单的场景中,如果我想检测长按,我可以通过以下方
我在创建以下可观察值时遇到问题。 我希望它接收预定义的值数组 我想按不同的事物进行过滤,并能够将它们作为单独的可观察值进行处理。 然后,当需要合并这些过滤后的可观察值时,我想保留原始观察值的顺序 //
我有一个 Observable .我想把它变成一个 Map它告诉我每个不同字符串的出现次数。 Observable 包含约 10 亿个元素,其中 1000 个是不同的(因此不能将整个数据集存储在 RA
swipeRefreshLayout.setOnRefreshListener(() -> { swipeRefreshLayout.setRefreshing(true); retrieveDa
我是 ReactiveX 的新手。我是通过阅读源代码来学习它的。一切都那么清晰,但突然间我得到了一个名为“Consumer”的词,它是一个接口(interface)。它被用来代替观察者。 谁能告诉我它
如何在不使用任何加载器的旧 javascript 应用程序中加载 RxJS? 对于 RxJS 4.x,我可以简单地这样做: RxJS 5 怎么样?他们的文档假设您正在使用某种类型的加载器来处理所有事
我正在寻找一个与 debounce(ms) 类似的运算符,但它触发第一个事件,然后等待 ms 然后触发第一个事件,依此类推上。 基本上,我想过滤发生时间非常接近的事件(就时间而言),但不是等到最后一个
我是一名优秀的程序员,十分优秀!