Quiero lanzar un error del operador de mapa de mi observable basado en una condición. Por ejemplo, si no se reciben los datos de API correctos. Consulte el siguiente código:
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.") );
}
Básicamente, como puede ver en el código, si la respuesta (objeto res) no tiene 'bearerToken', quiero arrojar un error. De modo que en mi suscripción entra en el segundo parámetro (handleError) mencionado a continuación.
.subscribe(success, handleError)
¿Alguna sugerencia?
fuente
throw 'Valid token not returned';
?return throw 'message here'
lareturn
palabra clave, pero funciona sin ella . Déjame comprobar si funciona correctamente de forma lógica.subscribe
método y.finally()
también se activa en la secuencia. (Sin embargo, la ejecución se detiene, lo cual es bueno)