RxJava系列之timer/interval/delay操作符

  • timer:創(chuàng)建型操作符,用于延時(shí)執(zhí)行任務(wù)
  • interval:創(chuàng)建型操作符,用于周期執(zhí)行任務(wù)
  • delay:輔助型操作,用于延時(shí)傳遞數(shù)據(jù)

1.timer

timer原理圖如下所示:

timer.png

timer()只是用來(lái)創(chuàng)建一個(gè)Observable,并延遲發(fā)送一次的操作符,timer()并不會(huì)按周期執(zhí)行

    //延遲 1s 后執(zhí)行一個(gè)任務(wù),然后結(jié)束
    private void startTimeDemo1() {
        DisposableObserver<Long> disposableObserver = getObserver();
        Observable.timer(1000, TimeUnit.MILLISECONDS)
                  .subscribeOn(Schedulers.io())
                  .subscribe(disposableObserver);
        mCompositeDisposable.add(disposableObserver);
    }

2.interval

interval原理圖如下所示:

interval.png

interval()也是用來(lái)創(chuàng)建Observable的,并且也可以延遲發(fā)送,但interval()是按周期執(zhí)行的

    //每隔 1s 執(zhí)行一次任務(wù),第一次任務(wù)執(zhí)行前有 1s 的間隔,執(zhí)行無(wú)限次
    private void startTimeDemo2() {
        DisposableObserver<Long> disposableObserver = getObserver();
        Observable.interval(1000, TimeUnit.MILLISECONDS)
                  .subscribeOn(Schedulers.io())
                  .subscribe(disposableObserver);
        mCompositeDisposable.add(disposableObserver);
    }

3. delay

delay原理圖如下所示:

delay.png

delay():延遲一段指定的時(shí)間再發(fā)送來(lái)自Observable的發(fā)送結(jié)果,
其實(shí)delay()的常規(guī)使用跟timer()一致。delay()是用于流中的操作,跟map()、flatMap()的級(jí)別是一樣的,而timer()是用于創(chuàng)建Observable

    //先執(zhí)行一個(gè)任務(wù),等待 1s,再執(zhí)行另一個(gè)任務(wù),然后結(jié)束
    private void startTimeDemo5() {
        DisposableObserver<Long> disposableObserver = getObserver();
        Observable.just(0L).doOnNext(new Consumer<Long>() {
            @Override
            public void accept(Long aLong) throws Exception {
                Log.d(TAG, "執(zhí)行第一個(gè)任務(wù)");
            }
        })
                  .delay(1000, TimeUnit.MILLISECONDS)
                  .subscribe(disposableObserver);
        mCompositeDisposable.add(disposableObserver);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容