一旦 http 请求 returns 特定值,rxjs 就会抛出错误
rxjs throwing an error once http request returns a specific value
我确实写了一个 Observable,它正在轮询一个 URL,一旦返回特定值就完成。
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.
}
这工作得很好,但我正在努力研究如何在我的响应达到以下状态时抛出异常 "r.Status === 'canceled'"。
感谢您对此的任何提示!
问候
卢卡斯
您可以只使用 do()
并在您需要的任何条件下抛出 Error
:
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'
或其他条件。
我确实写了一个 Observable,它正在轮询一个 URL,一旦返回特定值就完成。
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.
}
这工作得很好,但我正在努力研究如何在我的响应达到以下状态时抛出异常 "r.Status === 'canceled'"。
感谢您对此的任何提示!
问候 卢卡斯
您可以只使用 do()
并在您需要的任何条件下抛出 Error
:
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'
或其他条件。