suchen

Heim  >  Fragen und Antworten  >  Hauptteil

android - 关于Rxjava的tack操作符?

大家讲道理大家讲道理2772 Tage vor600

Antworte allen(2)Ich werde antworten

  • 黄舟

    黄舟2017-04-17 17:19:38

    take(long,TimeUnit,Scheduler):获取发射的数据序列中,从头部开始某个时间段内的数据。
    long : 是时间长度
    TimeUnit : 是时间单位
    scheduler : take操作运行的调度器,RxJava内置多个调度器, 这些调度器已经满足日常的使用,直接拿过来用。

    举个例子吧,我要在工作线程中拿到前5秒发射的数据:

    Observable.from(xxx)
              .take(5, TimeUnit.SECONDS, Schedulers.newThread())
              .subscribe(new Subscriber<Object>) {
                  
                  ...
                  
              } 
    

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-17 17:19:38

    不太懂你构造的这个 Scheduler 的用途,不过可以看一下 take 的源码,三个参数的方法,最终构造出来的 Scheduler 只调用了第二个 schedule 方法,所以不会执行第一个中的代码。

    @Override
    public Subscriber<? super T> call(Subscriber<? super T> child) {
        Worker worker = scheduler.createWorker();
        child.add(worker);
        
        TakeSubscriber<T> ts = new TakeSubscriber<T>(new SerializedSubscriber<T>(child));
        worker.schedule(ts, time, unit);
        return ts;
    }

    Antwort
    0
  • StornierenAntwort