【发布时间】:2017-08-29 04:56:22
【问题描述】:
我想根据条件从我的 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';呢? -
编译失败
-
请提供确切的错误信息。
-
哦,抱歉,它不适用于
return throw 'message here',但可以在没有return关键字的情况下使用。让我检查一下它的逻辑是否正确。 -
subscribe方法中没有收到错误文本,流中的.finally()也会触发。 (但是执行停止,这是一件好事)
标签: angular typescript rxjs