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