2017-01-06 58 views
0

我试图返回故障后http.get请求的状态,但下面的代码无法正常工作后返回http..get状态:Angular2:失败

fileExists(url){ 
     var status=""; 
     this.http.get(url) 
        .map(res => res.json()) 
        .subscribe(
         data => console.log(data), 
         err =>{ 
           console.log(err.status) 
           status=err.status}); 
     console.log("Status is: "+status); 
     return status; 
    } 

我预计status=err.status设置状态在变量中,但它不起作用

+0

'的console.log( “状态是: ”+状态);'将打印'status'为'“”'因为它得到评估之前'http.get'调用就可以完成 –

回答

1

你必须与res一起才能够做res.status那么。

只要你得到res.json()你失去了地位,以及其他信息。 res.json()所做的就是返回一个内部对象版本res._body

请参阅Angular2 responses

+0

你说什么是有道理的,但你可以正确的代码 –

+0

我不知道我怎么能得到res.json在fialure部分 –

+0

@KamyarParastesh你将不得不运行'res.json()'on你自己里面的订阅成功。如果json无效,那么它将会失败,这并不意味着'!== 200'。 – zurfyx

0

以下代码将在变量内存储http request状态。发送请求后屏幕上将显示status的变量。

export class App { 

    private status: string; 

    constructor(private http: Http) { 
    this.http.get(`someNotExistingJSON.json`) 
     .subscribe(res => { 
       console.log("success") 
      }, 
      err => { 
       console.log(err.status); 
       this.status = err.status; 
      } 
     ) 
    }; 

    getStatus(){ 
    console.log(this.status); 
    } 
} 

Plunker