À l'aide des importations suivantes:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/delay';
Essaye ça:
let fakeResponse = [1,2,3];
let delayedObservable = Observable.of(fakeResponse).delay(5000);
delayedObservable.subscribe(data => console.log(data));
MISE À JOUR: RXJS 6
La solution ci-dessus ne fonctionne plus vraiment dans les nouvelles versions de RXJS (et d'angular par exemple).
Donc, le scénario est que j'ai un tableau d'éléments à vérifier avec une API. L'API n'accepte qu'un seul élément et je ne souhaite pas tuer l'API en envoyant toutes les demandes en même temps. J'ai donc besoin d'une publication chronométrée des éléments sur le flux Observable avec un petit délai entre les deux.
Utilisez les importations suivantes:
import { from, of } from 'rxjs';
import { delay } from 'rxjs/internal/operators';
import { concatMap } from 'rxjs/internal/operators';
Ensuite, utilisez le code suivant:
const myArray = [1,2,3,4];
from(myArray).pipe(
concatMap( item => of(item).pipe ( delay( 1000 ) ))
).subscribe ( timedItem => {
console.log(timedItem)
});
Il crée essentiellement un nouvel observable «retardé» pour chaque élément de votre tableau. Il existe probablement de nombreuses autres façons de le faire, mais cela a bien fonctionné pour moi et est conforme au «nouveau» format RXJS.