如何在没有延迟的情况下立即启动Observable Interval?

ada*_*ort 21 rxjs reactivex

我希望我的观察能够立即射击,并且每秒钟都会射击.interval不会立即开火.我发现这个问题建议使用startWith,哪个会立即触发,但我得到一个重复的第一个条目.

  Rx.Observable.interval(1000).take(4).startWith(0).subscribe(onNext);
Run Code Online (Sandbox Code Playgroud)

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

如何立即点火,但不能复制第一个条目?

Jul*_*ova 33

Observable.timer(0,1000)将立即启动.


rob*_*ing 18

RxJs 6

interval(100).pipe(startWith(0)).subscribe(() => { //your code }); 
Run Code Online (Sandbox Code Playgroud)

或使用计时器:

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

    });
Run Code Online (Sandbox Code Playgroud)

  • 对于 RxJs 6+ Interval(100).pipe(startWith(0)).subscribe(() => { //你的代码 }); (2认同)

Mic*_*cer 5

使用RxJava2,重复的第一项没有问题,并且此代码可以正常工作:

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

注意,您需要传递LongstartWith,所以0L