2017-01-17 4 views
1

저는 새로운 반응 형 프로그래머입니다. 옵저버의 onNext 메소드를 호출하고 싶었습니다. 거기에 좋은 방법이 있습니까? 당신은 단지 하나의 가입자에서 onNext 호출 할 수 있기 때문에 예 -Observable.defer의 Observer 's onNext met을 호출하십시오.

Observable.create(new Observable.OnSubscribe<Integer>() { 
    @Override 
    public void call(Subscriber<? super String> observer) { 
     try { 
      if (!observer.isUnsubscribed()) { 

       // While using create, can call observer.onNext   
       for(int i=0;i< 10 ;i++) 
        observer.onNext(""); 

       observer.onCompleted(); 
      } 
     } catch (Exception e) { 
      observer.onError(e); 
     } 
    } 
}); 

Observable.defer(new Func0<Observable<String>>() { 

    @Override 
    public Observable<String> call() { 

     // I want call observer.onNext("") here 

       return Observable.just(""); 
    } 

}); 

답변

0

에 대한

가져 가라. 당신이이처럼 가입 방법 안에이 "onNext"를 부르는 것이다이 관찰을 구독 할 수 있습니다,

final Subscriber<String> subscriber = new Subscriber<String>() { 
     @Override 
     public void onCompleted() { 

     } 

     @Override 
     public void onError(Throwable e) { 

     } 

     @Override 
     public void onNext(String s) { 

     } 
    }; 

    Observable.defer(new Func0<Observable<String>>() { 

     @Override 
     public Observable<String> call() { 

      // I want call observer.onNext("") here 

      subscriber.onNext("Test"); 
      return Observable.just("dasdsa"); 
     } 

    }); 

:하지만 나는 이런 식으로 뭔가를 하나 명의 가입자를 만든 다음이 가입자로부터 onNext 전화를 말할 것

Observable.defer(new Func0<Observable<String>>() { 

     @Override 
     public Observable<String> call() { 

      // I want call observer.onNext("") here 
      return Observable.just("dasdsa"); 
     } 

    }).subscribe(new Action1<String>() { 
     @Override 
     public void call(String s) { 
      //on Next was called after the subscribe 
     } 
    }); 

나는 당신에게 무엇이 더 유용 할 지 결정할 것이라고 생각합니다.