如何认识到rx无法解决问题?

时间:2018-08-15 13:05:14

标签: rxjs reactivex

似乎所有的方法都不是非常吸引人的方法。我有两个长度不同的可观察对象,并试图将它们重新组合为一个。我为此花了两天而未成功,我想知道是否可以完成从两到一的重组?这两个具有最后一个的所有数据。 我故意避免附加一个具体的例子。想得到一些常见的答案(请参见标题)。

1 个答案:

答案 0 :(得分:1)

根据您的用例,有许多运算符可以将两个(或多个)可观察值的输出进行组合。以下是一些常见的方法:

邮政编码

组合多个可观察对象并合并它们之间的输出,并在任何源可观察对象完成时完成:

let obs1 = from([0, 1, 2]);
let obs2 = from([a, b, c, d]);
result = obs1.pipe(zip(obs2)).subscribe((x) => console.log(x));

输出:

[0, a], [1, b], [2, c]

合并

组合多个可观察物,它们在发生时从源可观察物发出每种发射,并一直持续到所有源可观察物完成:

let obs1 = from([0, 1, 2]).pipe(delayTime(100));
let obs2 = from([a, b, c, d]).pipe(delayTime(151));
result = obs1.pipe(merge(obs2)).subscribe((x) => console.log(x));

输出:

0, a, 1, 2, b, c, d

Concat

组合多个可观察物,从一个发射到所有发射,直到完成为止,然后从下一个发射出去:

let obs1 = from([0, 1, 2]).pipe(delayTime(100));
let obs2 = from([a, b, c, d]).pipe(delayTime(151));
result = obs1.pipe(concat(obs2)).subscribe((x) => console.log(x));

输出:

0, 1, 2, a, b, c, d