我需要显示后端最近的 5 项。我应该缓冲 observable 中的最后 10 个项目,但 observable 可能只有 0..4 个项目并且永远不会创建缓冲区,所以我需要 2000ms 的 maxtime。问题是我测试过:bufferTime(2000, null, 5)但这会发出空数组。如何避免 observable 发出空数组?缓冲区应始终保存最后 10 个项目,并且仅在添加新项目时才发出新缓冲区。
// [A,B,C] - after 2s, buffer -> [A,B,C]
// [A,B,C] - after 2s, buffer -> [] --> AVOID THIS
// [A,B,C] - after 2s, buffer -> [] --> AVOID THIS
// [A,B,C,D,E] - after count 5, buffer -> [A,B,C,D,E]
// [A,B,C,D,E,F] - after count 5, buffer -> [B,C,D,E,F]
Run Code Online (Sandbox Code Playgroud)
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-bufferTime
您可以filter在应用运算符后清空数组bufferTime。就像是:
myObservable$.pipe(
bufferTime(2000, null, 5),
filter(items => items.length > 0)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |