使用以下导入:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/delay';
尝试这个:
let fakeResponse = [1,2,3];
let delayedObservable = Observable.of(fakeResponse).delay(5000);
delayedObservable.subscribe(data => console.log(data));
更新:RXJS 6
上述解决方案在新版本的 RXJS(例如 Angular)中不再有效。
因此,场景是我有一组项目需要使用 API 进行检查。该 API 只接受单个项目,我不想通过一次发送所有请求来终止该 API。因此,我需要在 Observable 流上定时释放项目,并在两者之间有一个小的延迟。
使用以下导入:
import { from, of } from 'rxjs';
import { delay } from 'rxjs/internal/operators';
import { concatMap } from 'rxjs/internal/operators';
然后使用以下代码:
const myArray = [1,2,3,4];
from(myArray).pipe(
concatMap( item => of(item).pipe ( delay( 1000 ) ))
).subscribe ( timedItem => {
console.log(timedItem)
});
它基本上为数组中的每个项目创建一个新的“延迟”Observable。可能还有很多其他方法可以做到这一点,但这对我来说效果很好,并且符合“新”RXJS 格式。