2016-08-15 16 views
6

Mevcut uygulamanızda, boş bir dizi olduğunda veya sunucunun yanıt vermesi çok uzun sürdüğünde gözlemlenebilir bir yanıt göremiyorum. Başka bir yerde buldum .timeout kullanarak denedi ama bu da işe görünmüyorAngular2 boş yanıt kullanımı

getIncomingData():Observable<any[]> { 
    console.log("GetIncomingData"); 
    return this.http.get('http://mylink/data') 
     .map(data => this.extractIncomingData(data)) 
     .catch(this.handleError); 
} 

private extractIncomingData(res:Response):any[] { 
    if (res.status < 200 || res.status >= 300) { 
     throw new Error('Bad respons status: ' + res.status); 
    } 
    console.log(res.json()); 
    return <any>res.json(); 
} 

: İşte benim geçerli durumdur. Angular2 rc1 kullanıyorum. Sorunumu nasıl çözeceğimi bilen var mı? Teşekkürler.

cevap

1

Verileri güvenli bir şekilde çıkarmak için aşağıdaki if deyimini kullanabilirsiniz.

if (res) { 
     return res.json() || {}; 
    } 
0

nacho_dh cevabı yakındı ama res boş olması olası değildir bir nesnedir. Bu soruna sahip olsaydım, res nesnesi geçerli bir nesneydi, ancak _body özelliği '' idi, bu bir istisna atmak için res.json() nedenidir. Yani gerekir:

.map(res => (<any>res)._body == '' ? {} : res.json()) 

Not, sen _body özel ve typescript buna erişmek izin vermez çünkü <any> res döküm gerekir 2 Açısal ve bu nedenle typescript ile çalışma verildi.

evet hacky biliyorum, teşekkürler