我正在使用RxViz模拟每1秒出现的不同 Action 。当我尝试

Rx.Observable.create(obs => {
  obs.next([1, 2, 3]); // or could be ['aaa', 'bbbb', 'ccc']
  obs.complete();
}).delay(1000);

https://rxviz.com

或我自己使用console.log

它会同时显示三个数字1、2、3

有一篇关于这个相同问题的文章,但是没有一个答案对我有用。我正在使用Rx的最新版本6

How can I create an observable with a delay

[编辑]数组可以包含数字,字符串或任何对象之类的任何东西

最佳答案

如果要延迟每个值(例如,延迟1秒),则可以执行以下操作:

 Rx.Observable.create(obs => {
      obs.next([1, 2, 3]);
      obs.complete();
    })
      .pipe(
        // make observable to emit each element of the array (not the whole array)
        mergeMap((x: [any]) => from(x)),
        // delay each element by 1 sec
        concatMap(x => of(x).pipe(delay(1000)))
      )
      .subscribe(x => console.log(x));
  }

在这里,我没有修改您创建的可观察对象的内部。相反,我只是以您的观察力为基础,并进行适当的操作以实现您期望的目标。

关于rxjs - 使用RXJS延迟每个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50886975/

10-09 18:50