【发布时间】:2018-10-28 11:28:32
【问题描述】:
我需要显示来自后端的最近 5 项。我应该缓冲 observable 中的最后 10 个项目,但 observable 可能只有 0..4 个项目并且从不制作缓冲区,所以我需要 2000 毫秒的最大时间。问题是我测试过的: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]
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-bufferTime
【问题讨论】: