2016-04-19 7 views
14

समयबाह्य करने यहाँ बस नियमित अनुरोध है कि की तरह लग रही है:कैसे angular2 http अनुरोध

this.people = http.get('http://localhost:3000/users') 
     .map(response => response.json()); 
    } 

वहाँ dealy लिए कोई तरीका है/टाइमआउट कि?

उत्तर

27

आप observables की timeout ऑपरेटर लाभ उठा सकते हैं नीचे वर्णित के रूप में,:

:

return this.http.get('http://api.geonames.org/postalCodeSearchJSON', 
      { search: params }) 
    .retryWhen(error => error.delay(500)) 
    .timeout(2000, new Error('delay exceeded')) // <------ 
    .map(res => res.json().postalCodes); 

(अनुभाग "समर्थन पुन: प्रयास करें" के साथ) अधिक जानकारी के लिए यह लेख देखें

+1

मैं करना था: आप इसे पसंद उपयोग कर सकते हैं '.retryWhen (त्रुटियों => errors.delayWhen (() => Observable.timer (1000)))' के साथ आरएक्सजेएस 5.0.2। https://www.learnrxjs.io/operators/error_handling/retrywhen.html – Brandon

+0

क्या वैश्विक स्तर पर टाइमआउट सेट करने का कोई तरीका है? – Will

+0

@Will क्या वैश्विक स्तर पर टाइमआउट सेट करने का कोई तरीका है? –

7

का वापसी मूल्यएक अवलोकन है, प्रतिक्रिया नहीं।

getPeople() { 
    return http.get('http://localhost:3000/users') 
     .timeout(2000) 
     .map(response => response.json()); 
    } 
} 

foo() { 
    this.subscription = getPeople.subscribe(data => this.people = data) 
} 

// to cancel manually 
cancel() { 
    this.subscription.unsubscribe(); 
} 

भी देखें https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/timeout.md

+4

उत्कृष्ट उत्तर - केवल एक नोट: आपको आरएक्सजेएस से टाइमआउट ऑपरेटर आयात करने की आवश्यकता है या यह काम नहीं करेगा: आयात 'rxjs/add/operator/timeout'; – rhysclay

+0

हाय गनटर, मैंने बिना किसी प्रभाव के अर्थकाल 'टाइमआउट' का उपयोग किया है (जिसका मतलब कोई देरी नहीं है), लेकिन जब मैं 'देरी (1000)' का उपयोग करता हूं, तो यह 1 सेकंड के लिए देरी से डेटा के साथ काम करता है। मैंने 'rxjs/add/operator/timeout 'आयात किया है, लेकिन जब भी मैं' टाइमआउट (5000) डालता हूं, तब भी मुझे डेटा मिल जाता है। क्या डेटाआउट बस डेटा में देरी से कुछ अलग करता है? –

+0

टाइमआउट समय के भीतर नहीं आने पर त्रुटि के साथ देखने योग्य को पूरा करता है। देरी घटनाओं के उत्पादन में देरी हो रही है। –