2017-08-03 38 views
0

我使用angular2 http get方法从API中获取对象数组。我希望一个observable可以在短时间内将数组1的元素加1,我怎么实现这个功能呢?这就是我现在的代码:Observable发出数组元素

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

我wan't它像下面的一个工作,所以结果是由一个单一的元素以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

可以使用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

您可以使用delay运营商。请参阅RxJs Docs