我希望在observable的map操作符中根据某个条件抛出一个错误,例如,如果没有收到正确的API数据。请看以下代码:
private userAuthenticate( email: string, password: string ) {
return this.httpPost(`${this.baseApiUrl}/auth?format=json&provider=login`, {userName: email, password: password})
.map( res => {
if ( res.bearerToken ) {
return this.saveJwt(res.bearerToken);
} else {
// THIS DOESN'T THROW ERROR --------------------
return Observable.throw('Valid token not returned');
}
})
.catch( err => Observable.throw(this.logError(err) )
.finally( () => console.log("Authentication done.") );
}
基本上,如您在代码中所见,如果响应(
res
对象)没有bearerToken
,我想抛出一个错误。这样,在我的订阅中,它将进入下面提到的第二个参数(handleError
)。.subscribe(success, handleError)
有任何建议吗?
throw 'Valid token not returned';
的意思是“抛出‘未返回有效令牌’的异常”。 - Günter Zöchbauerreturn throw 'message here'
,但是不使用return
关键字可以正常工作。让我检查一下逻辑是否正确。 - Hassansubscribe()
没有接收到任何内容。this.logError(err)
应该返回err;
。subscribe(...)
接收到了Observable.throw(...)
发出的内容。如果它发出的值是null
,那么subscribe(...)
将接收到null
。 - Günter Zöchbauer