Je veux que mon observable tire immédiatement, et encore toutes les secondes. interval
ne tirera pas immédiatement. J'ai trouvé cette question qui suggérait d'utiliser startWith
, qui se déclenche immédiatement, mais je reçois ensuite une copie de la première entrée.
Rx.Observable.interval(1000).take(4).startWith(0).subscribe(onNext);
https://plnkr.co/edit/Cl5DQ7znJRDe0VTv0Ux5?p=preview
Comment puis-je faire feu par intervalles immédiatement, mais ne pas dupliquer la première entrée?
Observable.timer (0, 1000) va commencer immédiatement.
for
RxJs 6
interval(100).pipe(startWith(0)).subscribe(() => { //your code });
Dans rxjs 5.5.6
import {interval} from 'rxjs/observable/interval';
import 'rxjs/add/operator/startWith';
interval(100).startWith(0).subscribe(() => {
//your code
});
ou avec minuterie:
import {timer} from 'rxjs/observable/timer';
timer(0, 100).subscribe(() => {
});
Avec RxJava2, la première entrée dupliquée ne pose aucun problème et ce code fonctionne correctement:
io.reactivex.Observable.interval(1, TimeUnit.SECONDS)
.startWith(0L)
.subscribe(aLong -> {
Log.d(TAG, "test"); // do whatever you want
});
Notez que vous devez passer Long
dans startWith, donc 0L
.