代码之家  ›  专栏  ›  技术社区  ›  user2121

使用时如何增加延迟。just()运算符

  •  3
  • user2121  · 技术社区  · 7 年前

    我用这个编码了一个可观察的。just()运算符,如代码中所示。 我想做的是,给操作符加一个延迟,这样在整数值发送给观测者之前,它应该延迟几秒钟

    类似于:

    mAsyncObservable = rx.Observable.create(new rx.Observable.OnSubscribe<Integer>() {
            @Override
            public void call(Subscriber<? super Integr> subscriber) {
                SystemClock.sleep(3000);
    
                subscriber.onNext(10);
                subscriber.onCompleted();
            }
        });
    

    如何使用转换相同的代码。just()运算符?

    :

    Subscriber<Integer> integerSubscriber = new Subscriber<Integer>() {
        private final String SubscriberTag = "integerSubscriber";
        @Override
        public void onStart() {
            super.onStart();
            Log.w(TAG, "onStart->" + SubscriberTag);
        }
    
        @Override
        public void onCompleted() {
            Log.w(TAG, "onCompleted->" + SubscriberTag);
        }
    
        @Override
        public void onError(Throwable e) {
            Log.w(TAG, "onError->" + SubscriberTag + e.getMessage().toString());
        }
    
        @Override
        public void onNext(Integer i) {
            Log.w(TAG, "onNext->" + SubscriberTag + "after processing " + i);
        }
    };
    
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
    
        rx.Observable<Integer> integerObservable = rx.Observable.just(10);
        integerObservable.subscribe(integerSubscriber);
    }
    
    1 回复  |  直到 7 年前
        1
  •  5
  •   Valentun    7 年前

    您可以使用:

    Observable.just("Some").delay(1, TimeUnit.SECOND);
    

    但请记住 delay()

     Observable.just("Some").delay(1, TimeUnit.SECOND).observeOn(AndroidSchedulers.mainThread());
    

    编辑

    正如@PPartisan所说,您还可以通过将其作为第三个参数传递给 delay :

    Observable.just("Some").delay(1, TimeUnit.SECOND, AndroidSchedulers.mainThread());