Korzystając z następujących importów:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/delay';
Spróbuj tego:
let fakeResponse = [1,2,3];
let delayedObservable = Observable.of(fakeResponse).delay(5000);
delayedObservable.subscribe(data => console.log(data));
AKTUALIZACJA: RXJS 6
Powyższe rozwiązanie tak naprawdę już nie działa w nowszych wersjach RXJS (i np. Angular).
Tak więc scenariusz jest taki, że mam tablicę elementów do sprawdzenia za pomocą interfejsu API. API akceptuje tylko jeden element i nie chcę go zabijać, wysyłając wszystkie żądania naraz. Więc potrzebuję czasowego wydania elementów w strumieniu Observable z niewielkim opóźnieniem między nimi.
Użyj następujących importów:
import { from, of } from 'rxjs';
import { delay } from 'rxjs/internal/operators';
import { concatMap } from 'rxjs/internal/operators';
Następnie użyj następującego kodu:
const myArray = [1,2,3,4];
from(myArray).pipe(
concatMap( item => of(item).pipe ( delay( 1000 ) ))
).subscribe ( timedItem => {
console.log(timedItem)
});
Zasadniczo tworzy nowe „opóźnione” obserwowalne dla każdego elementu w tablicy. Prawdopodobnie jest na to wiele innych sposobów, ale to zadziałało dobrze i jest zgodne z „nowym” formatem RXJS.