Observable发出数组元素

时间:2017-08-03 10:57:19

标签: angular rxjs observable

我使用angular2 http get方法从API获取对象数组。我希望一个observable能够以短暂的延迟返回数组1的元素,我该如何实现呢?这就是我现在的代码:

return this.authHttp.get('fetch/arrayOfObjects',options).map(res => res.json());

我不能像下面那样工作,所以结果由一个元素返回,延迟时间为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));

2 个答案:

答案 0 :(得分:3)

您可以使用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(...)

答案 1 :(得分:-1)

您可以使用delay运算符。请参阅RxJs Docs