【问题标题】:How buffering an observable<any> when count or max time avoiding emit empty arrays?当计数或最大时间避免发出空数组时如何缓冲 observable<any>?
【发布时间】: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

【问题讨论】:

    标签: rxjs angular6


    【解决方案1】:

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

    myObservable$.pipe(
      bufferTime(2000, null, 5),
      filter(items => items.length > 0)
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2023-01-23
      相关资源
      最近更新 更多