可观察的发出数组元素

RB_*_*RB_ 0 observable rxjs angular

我正在使用 angular2 http get 方法从 API 获取对象数组。我想要一个 observable 以 1 乘 1 的方式返回数组的元素,并且延迟很短,我该如何实现这一点?这就是我现在的代码:

return this.authHttp.get('fetch/arrayOfObjects',options).map(res => res.json());
Run Code Online (Sandbox Code Playgroud)

我不希望它像下面那样工作,因此结果由单个元素返回,延迟 1 秒:

var obs = Rx.Observable.create(function (observer) {
  let dt = [1,2,3,4,5];
  for(let e of dt){
     setTimeout(() => {
    observer.next(e);
  }, 1000);
  }
});

obs.subscribe(data=> console.log(data));
Run Code Online (Sandbox Code Playgroud)

mar*_*tin 5

您可以使用concatAll()然后delay()在每次发射之间创建暂停(我假设远程服务返回一个对象数组):

return this.authHttp.get('fetch/arrayOfObjects',options)
  .map(res => res.json())
  .concatAll() // unpack the array into single emissions
  .concatMap(val => Observable.of(val).delay(100)) // delay each emission
  .subscribe(...)
Run Code Online (Sandbox Code Playgroud)