这是我在RxJs6中的代码:
const observable$ = interval(1000).pipe(
take(2),
map(x => interval(1500).pipe(
map(y => x+':'+y),
take(2),
concatAll()
)),
);
observable$.subscribe(obs => {
obs.subscribe(x => console.log(x));
});
我希望我的代码显示如下结果:
0:0
1:0
0:1
1:1
但实际上显示:
为什么我的代码每次仅打印一个字符?而且我认为它应该像我期望的那样工作,而不是实际结果。我对rxjs有什么了解吗?
答案 0 :(得分:2)
这是因为concatAll()
。它通常用于展平嵌套的Observable,但它也可以与Promises和数组(类似数组的对象)一起使用。蚂蚁,这正是您在这里看到的。
即使您有一个字符串,它也认为您想展平一个数组,因此它将数组中的每个项目(您的情况下为字符)并重新发出它。
但是,另一个问题是您想使用concatAll
实现什么。