Rxjs 如何缓冲可观察到的<;任何>;何时计数或最大时间避免发射空数组?

Rxjs 如何缓冲可观察到的<;任何>;何时计数或最大时间避免发射空数组?,rxjs,angular6,Rxjs,Angular6,我需要显示最近5个项目从后端。我应该缓冲来自observable的最后10个项目,但是observable可能只有0..4个项目,并且从来没有缓冲过,所以我需要2000ms的最大时间。我测试的问题是:bufferTime(2000,null,5),但它会发出空数组。如何避免可观测发射空阵列?缓冲区应始终保留最后10个项目,并且仅在添加新项目时发出新缓冲区 // [A,B,C] - after 2s, buffer -> [A,B,C] // [A,B,C]

我需要显示最近5个项目从后端。我应该缓冲来自observable的最后10个项目,但是observable可能只有0..4个项目,并且从来没有缓冲过,所以我需要2000ms的最大时间。我测试的问题是:
bufferTime(2000,null,5)
,但它会发出空数组。如何避免可观测发射空阵列?缓冲区应始终保留最后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]

您可以在应用
bufferTime
运算符后清空数组。比如:

myObservable$.pipe(
缓冲时间(2000,空,5),
筛选器(items=>items.length>0)
)
您可以在应用
bufferTime
运算符后清空数组。比如:

myObservable$.pipe(
缓冲时间(2000,空,5),
筛选器(items=>items.length>0)
)