2016-08-15 22 views
6

मेरे वर्तमान एप्लिकेशन में मुझे अवलोकन योग्य से प्रतिक्रिया प्राप्त नहीं हो सकती है जब यह खाली सरणी होती है या जब सर्वर को उत्तर देने में बहुत अधिक समय लगता है।कोणीय 2 खाली प्रतिक्रिया हैंडलिंग

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(); 
} 

मैं .timeout मैं कहीं और पाया उपयोग करने की कोशिश की है, लेकिन है कि या तो काम करने के लिए प्रतीत नहीं होता: यहाँ मेरे वर्तमान स्थिति है। मैं Angular2 आरसी 1 का उपयोग कर रहा हूँ। क्या कोई मेरी समस्या को हल करने के बारे में जानता है? धन्यवाद।

उत्तर

1

यदि आप डेटा को सुरक्षित रूप से निकालने के लिए कथन का पालन कर सकते हैं तो आप निम्न का उपयोग कर सकते हैं।

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

nacho_dh के जवाब करीब था लेकिन res एक वस्तु है कि रिक्त होने की संभावना नहीं है। अगर मुझे यह समस्या थी तो Res ऑब्जेक्ट एक वैध ऑब्जेक्ट था लेकिन _body संपत्ति "'थी, यही कारण है कि res.json() को अपवाद फेंकने का कारण बनता है। तो अगर आप की जरूरत है:

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

ध्यान दें, कोणीय 2 और इसलिए टाइपप्रति साथ आपके कार्य आप <any> लिए रेस कास्ट करने के लिए क्योंकि _body निजी है और टाइपप्रति आप उस तक पहुँच नहीं दूँगी की आवश्यकता होगी दिया।

हाँ मुझे इसकी हैकी पता है, धन्यवाद

संबंधित मुद्दे