2017-12-20 15 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); 
     } 
    }); 
} 

이 당신에게

도움이 될