2017-01-02 5 views
2

특정 값이 반환되면 완료되는 URL을 폴링하는 Observable을 작성했습니다.일단 http 요청이 특정 값을 반환하면 rxjs는 오류를 던집니다.

private checkPairingStatus(paringModel: any): Observable<ResponseObject> { 
    let data = { id: 1234 }; 
    return Observable 
     .interval(2000) 
     .switchMap(() => this.get<ResponseObject>('http://api/getstatus', data)) 
     .first(r => r.Status === 'success') // once our pairing is active we emit that 
     .timeout(90000, Observable.throw(new Error('Timeout ocurred'))); 
     // todo: find a way to abort the interval once the PairingStatus hits the 'canceled' status. 
} 

이 꽤 잘 작동하지만, 예를 들어 내 respone는 "r.Status가 === '취소'"다음 상태에 도달하면 예외를 발생하는 방법에 대한 사투를 벌인거야.

그 어떤 힌트를 주셔서 감사합니다!

감사 루카스

당신이 필요로하는 어떤 조건 당신은 단지 do()을 사용하고과 Error을 던질 수

답변

3

:

return Observable 
    .interval(200) 
    .do(val => { 
     if (val == 5) { 
      throw new Error('everything is broken'); 
     } 
    }) 
    .subscribe(
     val => console.log(val), 
     err => console.log('Error:', err.message) 
    ); 

이 인쇄 콘솔에 : 귀하의 경우

0 
1 
2 
3 
4 
Error: everything is broken 

당신 ' r.Status === 'canceled' 또는 그와 같은 조건을 테스트하고 싶습니다.

+0

이것은 작동하는 것 같습니다! – Lukas