2016-07-05 9 views
3

私はRXJS Observableを使用したいと思います。基本的にうまくいきますが、observer.next()のときだけでなく、observer.complete()が呼び出されたときに反応する必要はありません。 RXJS ObservableのOnCompleteのイベントを取得するにはどうすればよいですか?私の意見では、RXJSのドキュメントは混乱しています。RXJS Observable doSomething onComplete

export class Service { 
    myMethod():Observable<any> { 
     return Observable.create((observer:any) => { 
     for(let i=0; i<10; i++) { 
     observer.next(i); 
     } 
     if(true==true) { 
      // this event I need 
      observer.complete(); 
     } else { 
      observer.error(xhr.response); 
     } 
    } 
} 

export class Component() { 
    // constructor etc. 

    doSome() { 
     this.service.myMethod() 
     // Here I would like to get OnComplete event 
      .catch(this.handleError) 
      .subscribe((num:any) => { 
      console.log(num); 
     }); 
    } 
} 

答えて

10

subscribeメソッドは3つのコールバックを受け入れます。最後のイベントは完全なイベントです。

doSome() { 
    this.service.myMethod() 
     .subscribe((num:any) => { 
     console.log(num); 
     }, (err) => { 
     this.handleError(err); 
     },() => { // <---- 
     this.handleComplete(); 
     }); 
} 

また、finally演算子を利用することもできます。

doSome() { 
    this.service.myMethod() 
     .catch(this.handleError) 
     .finally(this.handleComplete) // <---- 
     .subscribe((num:any) => { 
     console.log(num); 
    }); 
} 
+2

これは私のために働いた.finally(()=> this.handleComplete) – jfgrissom

関連する問題