我使用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));
答案 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。