【问题标题】:RxJava Debounce method call received收到 RxJava Debounce 方法调用
【发布时间】:2018-06-02 18:52:16
【问题描述】:

我的意思是,我想为方法调用做一个简单的节流。 我有这个方法:

public void called(int number){
   doSomething(number);
}

这个方法调用太频繁了,我想根据收到的号码创建一个 observable 并给debounce 调用doSomething(number)

这可能吗?

【问题讨论】:

    标签: java rx-java debouncing


    【解决方案1】:

    当然,像这样-

    PublishSubject<Integer> subject = PublishSubject.create();
    
    subject
      .debounce(1, TimeUnit.SECONDS)
      .subscribe(new Action1<Integer>() {
        public void call(Integer number) {
          doSomething(number);
        }
      });
    
    public void called(int number){
      subject.onNext(number);   
    }
    

    【讨论】:

      【解决方案2】:
      private void doSomeWork() {
       getObservable().debounce(500, TimeUnit.MILLISECONDS)
                  // Run on a background thread
                  .subscribeOn(Schedulers.io())
                  // Be notified on the main thread
                  .observeOn(AndroidSchedulers.mainThread())
                  .subscribe(getObserver());
      }
      
       private Observable<Integer> getObservable() {
          return Observable.create(new ObservableOnSubscribe<Integer>() {
              @Override
              public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
                  doSomething(number);
              }
          });
      }
      

      这可能对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        相关资源
        最近更新 更多