如何在不完成添加序列的情况下从rxjs创建数组

时间:2016-04-17 01:12:55

标签: javascript angular rxjs

我正在试图找出一种rxjs方法来执行以下操作:

你有两个observable,一个onAddObs和onRemoveObs。 让我们说onAddObs.next()会激发几次,添加“A”,“B”,“C”。 我想得到[“A”,“B”,“C”]。

.toArray要求完成观察......但还有更多可能来。

这是第一部分。第二部分可能很明显...... 我想onRemoveObs然后从最终结果数组中删除。

我没有一个plunkr因为我无法接近这样做... 提前谢谢!

更新

根据user3743222的建议,我检查了.scan,它完成了这项工作! 如果其他人有这个问题,我已经包含了一个angular2服务,它显示了一个很好的方法。诀窍是使用.scan而不是添加/删除的内容流,添加/删除功能流,因此您可以从扫描中调用它们并传递状态。

Enter a 128-bit key to be used for encryption: aaaaaaaaaaaaaaaa
128-bit encryption key.......................[aaaaaaaaaaaaaaaa] length [16]
Text to encrypt..............................[adymlincoln
Text to encrypt..............................[adymlincoln] length [11]
Encrypted text...............................[\_i8`???R????] length [16]
Encoded text.................................[\_i8`???R????] length [16]
Encrypted text...............................[\_i8`???R????] length [16]
Text to Decrypt..............................[\_i8`???R????] length [16]
Decrypted text...............................[adymlincoln] length [11]

1 个答案:

答案 0 :(得分:3)

您可以在此处参考SO问题:How to manage state without using Subject or imperative manipulation in a simple RxJS example?。它处理与您相同的问题,即对对象执行操作的两个流。

其中一种技术是使用scan运算符和对scan中保存的状态进行操作的操作流,但无论如何都要查看链接,它是非常形成的。这应该允许你编写一些代码。如果该代码不能按照您想要的方式运行,您可以使用示例代码再次回答问题。