Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling 一旦http请求返回特定值,rxjs就会抛出错误_Error Handling_Rxjs_Polling - Fatal编程技术网

Error handling 一旦http请求返回特定值,rxjs就会抛出错误

Error handling 一旦http请求返回特定值,rxjs就会抛出错误,error-handling,rxjs,polling,Error Handling,Rxjs,Polling,我确实写了一个Observable,它轮询一个URL,一旦返回一个特定的值,这个URL就会完成 private checkPairingStatus(paringModel: any): Observable<ResponseObject> { let data = { id: 1234 }; return Observable .interval(2000) .switchMap(() => this.get<Respon

我确实写了一个Observable,它轮询一个URL,一旦返回一个特定的值,这个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.
}
private checkPairingStatus(配对模型:any):可观察{
let data={id:1234};
可观测回波
.间隔(2000年)
.switchMap(()=>this.get('http://api/getstatus",数据)
.first(r=>r.Status=='success')//一旦我们的配对激活,我们就会发出
.timeout(90000,可观察的.throw(新错误('timeout ocurred'));
//todo:找到一种在PairingStatus达到“Cancelled”(取消)状态时中止间隔的方法。
}
这工作得很好,但我正在努力研究如何在我的respone达到以下状态“r.status==‘cancelled’”时抛出异常

谢谢你的提示

问候 Lukas

您只需使用
do()
并在需要的任何条件下抛出
错误即可:

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===“cancelled”
或其他任何条件