angular2等待错误http响应

时间:2016-11-28 16:08:14

标签: http angular httpresponse

我对angular2 http响应有疑问。

我想捕捉组件中的错误。

我的应用如何运作 在我的组件中,我在个人服务中调用函数:

var response = this.apiUser.login(username, password);
alert(response);

在我的服务中,我尝试授权:

this.http.post(this.httpApiAdress + '/' + this.httpUserAutenticate, body, { headers: contentHeaders })
            .subscribe(
                response => {
                    localStorage.setItem('id_token', response.json().token);
                    this.router.navigate(['home']);
                },
                error => {
                    return error.json();
                },
                () => { }
            );

当auth正常时,一切正常。但是当Auth失败时,我无法在我的Component中捕获响应。 (由于警报是在http呼叫之前执行的,因此未完成...)

请你帮我! (当所有代码都只在我的Component中时,它工作正常,但我想放弃我的代码......)

1 个答案:

答案 0 :(得分:1)

使用map()代替subscribe()

返回observable
return this.http.post(this.httpApiAdress + '/' + this.httpUserAutenticate, body, { headers: contentHeaders })
.map(
    response => {
        localStorage.setItem('id_token', response.json().token);
        this.router.navigate(['home']);
    },
);

然后在响应或错误到达时使用subscribe执行代码

    var response = this.apiUser.login(username, password)
    .subscribe(
        response => alert(response), 
        error => alert(error),
    );