2017-12-20 14 views
0

メソッドコールのための簡単なスロットルを実行したいと思います。私はdoSomething(number)のためのコール受信した数とdebounceに基づき、観察を作成したい、RxJavaデバウンスメソッドコールが受信されました

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

が、この方法はあまりにも頻繁に呼び出されます。 私はこの方法を持っています。

これは可能ですか?

答えて

3

このように、確かに -

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

これはあなた

助けるかもしれません
関連する問題