angular - 用“takeWhile”“扩展”,也应用一个限制,就像“take”一样
问题描述
我正在尝试获取所有页面,直到没有更多页面或达到某个限制(例如 10 页)。
如果我这样走:
obs.pipe(expand((page) => {
return service.call(page).nextPage;
}),
take(10),
takeWhile(morePages));
然后 10 总是发生。如果我这样走:
obs.pipe(expand((page) => {
return service.call(page).nextPage;
}),
takeWhile(morePages),
take(10));
那么它可能会调用超过 10 次。
另一种选择是我编写自己的 takeWhile ,其中包括它自己的计数器。我会这样做,但我希望我可以使用标准 rxjs 选项构建该设备。
解决方案
你描述的不正确。两者都在满足特定条件take
时takeWhile
完成链。当订阅者收到complete
通知时,它会处理链,因此哪个先完成并不重要take*
。它将始终完成链条。
take(10)
因此,实际上使用和的顺序并不重要takeWhile(morePages)
。功能始终相同。
推荐阅读
- java - 创建比可用处理器更多的线程会产生性能开销吗?
- javascript - 查询 INSERT - 引用和反斜杠
- python - 列表列表的内存问题
- javascript - 将原始 CSS 转换为 Javascript DOM 样式属性
- excel - 如何从 Excel 中获取无序集中的下一个最大值
- javascript - 从其他文件导入变量
- java - (Android Studio 数据库)应用程序在输入数据时一直停止。(使用java、SQLite数据库)
- pandas - 使用 Pyinstaller 将带有 Pandas 的 Python 转换为 exe
- python - 将数据传输到列头并在熊猫中分配值
- apollo - 阿波罗客户端- [未处理的承诺拒绝:错误:响应不成功:收到状态代码 400]