Rxjs使用背压缓冲实现

时间:2015-09-04 14:09:26

标签: javascript reactive-programming rxjs

RxJS新手问题即将来临! 所以我有这个基本缓冲区,它将source1和source2中的所有内容追加到一个数组中。在某些条件下,缓冲区被清除。

Dim intIndex As Integer = ListView1.FindItemWithText(TextBox1.Text, False, 0, False).Index

我还希望拥有缓冲区的“使用者”,它可以从缓冲区中移动项目并使用它们执行操作。我如何实现它并确保消费者更新缓冲区可观察的?

编辑:我想将数据提供给SourceBuffer,但只允许在数据未更新时向其附加数据。这让我觉得背压情况。所以我确实试图创建一个controlled observable,但无法弄清楚如何使用我自己的缓冲来创建自己的版本。

1 个答案:

答案 0 :(得分:2)

  

所以我有这个基本缓冲区,它将source1和source2中的所有内容追加到一个数组中。在某些条件下,缓冲区被清除。

您需要做的是:

var sourceStream = Rx.Observable.merge(soruce1, source2);

var boundary = sourceStream.lift(someOperator) // for example sourceStream.skip(3);
// someOperator is where you perform the "magic"

var subscribeToThisStream = sourceStream.buffer( boundary ); 
// emits all items collected in the buffer between two boundary emitions
  

我也希望有一个"消费者"缓冲区,它从缓冲区中移动项目并使用它们执行操作。我如何实现它并确保消费者更新缓冲区可观察的?

如果您希望通过订阅者进行此操作,如果您想以Rx方式执行,甚至在某些情况下甚至可能无法做到,那么这绝对不可取。