收到RxJava Debounce方法调用

时间:2017-12-20 09:00:16

标签: java rx-java debouncing

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

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

此方法过于频繁地调用,我想根据收到的号码创建一个observable,并debounce调用doSomething(number)

这可能吗?

2 个答案:

答案 0 :(得分:4)

当然,像这样 -

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);   
}

答案 1 :(得分:-1)

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);
        }
    });
}

这可能对您有所帮助