为什么rxjs每次只打印一个字符?

时间:2018-09-02 14:49:33

标签: javascript rxjs rxjs6

这是我在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 

但实际上显示:

enter image description here

为什么我的代码每次仅打印一个字符?而且我认为它应该像我期望的那样工作,而不是实际结果。我对rxjs有什么了解吗?

1 个答案:

答案 0 :(得分:2)

这是因为concatAll()。它通常用于展平嵌套的Observable,但它也可以与Promises和数组(类似数组的对象)一起使用。蚂蚁,这正是您在这里看到的。

即使您有一个字符串,它也认为您想展平一个数组,因此它将数组中的每个项目(您的情况下为字符)并重新发出它。

但是,另一个问题是您想使用concatAll实现什么。