web-dev-qa-db-ja.com

遅延なくすぐに監視可能な間隔を開始するにはどうすればよいですか?

私は自分のオブザーバブルをすぐに、また毎秒発射します。 interval はすぐには起動しません。 この質問 が見つかりました。これはstartWithの使用を示唆しており、すぐに起動しますが、重複する最初のエントリを取得します。

  Rx.Observable.interval(1000).take(4).startWith(0).subscribe(onNext);

https://plnkr.co/edit/Cl5DQ7znJRDe0VTv0Ux5?p=preview

最初のエントリを複製せずに、すぐに間隔を空ける方法はありますか?

17
adamdport

Observable.timer(0、1000)はすぐに開始されます。

26

for

RxJs 6

interval(100).pipe(startWith(0)).subscribe(() => { //your code }); 

Rxjsで5.5.6

import {interval} from 'rxjs/observable/interval';
import 'rxjs/add/operator/startWith';

interval(100).startWith(0).subscribe(() => {
//your code
    });

またはタイマー付き:

import {timer} from 'rxjs/observable/timer';
timer(0, 100).subscribe(() => {

    });
12
robert king

RxJava2では、重複した最初のエントリに問題はなく、このコードは正常に機能しています。

io.reactivex.Observable.interval(1, TimeUnit.SECONDS)
        .startWith(0L)
        .subscribe(aLong -> {
            Log.d(TAG, "test");    // do whatever you want
    });

StartWithでLongを渡す必要があるので、0L

4
Micer