2017-02-20 2 views
16

मैं कोणीय 2 में अवलोकनों का लाभ उठाने की कोशिश कर रहा हूं और उलझन में हूं कि मुझे सदस्यता() पर मानचित्र() का उपयोग क्यों करना चाहिए। मैं एक WebAPI से मूल्यों को हो रही है, इसहमें कोणीय() में नक्शा() पर subscribe() का उपयोग क्यों करना चाहिए?

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry') 

की तरह अब subscribe(success, error, complete) का उपयोग कर मैं सफलता कॉलबैक पर सभी मूल्यों को प्राप्त कर सकते हैं और मुझे पूरा कॉलबैक पर मूल्यों लौट सकते हैं मान लीजिए । यदि मैं सभी सिद्धांतों की कार्यक्षमताओं को कर सकता हूं तो map() की आवश्यकता क्या है? क्या इससे कोई फायदा होता है?

, लघु क्यों एक की तरह लिखना चाहिए इस:

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry') 
    .map(r=>{}) 
    .subscribe(value => { 
    }, error => error,() => { 
}); 

जब वे बस मानचित्र समारोह के बिना यह लिख सकते हैं:

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry') 
    .subscribe(value => {   
    }, error => error,() => {   
}); 
+0

सदस्यता लें और नक्शा एक दूसरे से पूरी तरह से अलग है एक अच्छा दस्तावेज़ पढ़, कृपया प्रलेखन –

+0

मैं अपने प्रश्न को अद्यतन किया है के माध्यम से जाना, एक तो कृपया इसे देखें –

+1

.map (r => {}) परिणामस्वरूप अपरिभाषित मान होगा। कृपया, यदि आप उचित उत्तर की तलाश में हैं तो अपने मामले को उचित तरीके से समझाएं। मदद के लिए – estus

उत्तर

25

आप एक Observable वापस जाने के लिए चाहते हैं कुछ अन्य कोड सब्सक्राइब कर सकते हैं, लेकिन आप अभी भी मौजूदा विधि में डेटा इवेंट्स में हेरफेर करना चाहते हैं, map का उपयोग करें।

अवलोकन करने योग्य के वास्तविक उपयोगकर्ता को subscribe() की आवश्यकता है, क्योंकि subscribe() के बिना अवलोकन योग्य निष्पादित नहीं किया जाएगा।

subscribe() रिटर्न एक Subscription कि का सदस्य नहीं हो सकता है (forEach() या toArray() और शायद दूसरों subscribe() के बजाय नमूदार निष्पादित करने के लिए के रूप में अच्छी तरह से काम करते हैं), लेकिन यह सदस्यता रद्द करने के लिए इस्तेमाल किया जा सकता है।

map()Observable लौटाता है जिसका सदस्यता लिया जा सकता है।

7

आपको अपने एसिंक अनुरोध को चलाने के लिए subscribe की आवश्यकता है। यदि आप बस map सेट करते हैं - कोई अनुरोध ट्रिगर नहीं होगा। आप देख सकते हैं।

map का उपयोग करने के लिए अच्छी प्रैक्टिस का उपयोग करने के लिए अच्छा अभ्यास क्योंकि कई ग्राहक आपके परिणाम मान सकते हैं। तो प्रत्येक ग्राहक (ग्राहक) को प्रीप्रोकैसिंग जोड़ने की बजाय आप एकल आउटपुट को एकल डेटा स्कीमा के साथ तैयार कर सकते हैं।

13

मानचित्र को मिडलवेयर के रूप में सोचें जो प्रतिक्रिया को बदलता है।

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry') 
.map(r=>r.json()) 
.subscribe(result => { 
       // here result would have json object that was parsed by map handler... 
      },failurCallback,completeCallback) 

सदस्यता नमूदार आह्वान करने के लिए प्रयोग किया जाता है, कृपया पर cold-vs-hot-observables

+0

धन्यवाद –

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