web-dev-qa-db-fra.com

Comment faire en sorte qu'un intervalle observable commence immédiatement et sans délai?

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?

6
adamdport

Observable.timer (0, 1000) va commencer immédiatement.

16
Julia Passynkova

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(() => {

    });
2
robert king

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.

2
Micer