2017-04-25 5 views
5

मेरे पास एक सेवा getData() नीचे मेरी सेवा में है। यह एक अवलोकन योग्य देता है। एक और सेवा ApiService में एक विधि भी है() जो एक पर्यवेक्षण भी देता है।एसिंक कॉल में अवलोकन करने के लिए सदस्यता लेना काम नहीं कर रहा है [Angular2]

getData(args, parentKey?):any { 
     return new Observable(observer => { 
      this.apiService.get(args).subscribe(
       response => { 
        observer.next({ 
         data: response['data'], 
         status: ($.isEmptyObject(response) ? false : true) 
        }); 
       }, 
       error => console.log("error : ", error), 
       () => console.log("finished") 
      ); 
     }); 
    } 

मैं में अतुल्यकालिक एपीआई इस GetData() विधि का पुन: उपयोग करने की कोशिश कर रहा हूँ मेरी घटक से किए जाने के लिए कहता है। नीचे देखें:

this.myService.getData({ 
    url: 'apiUrl1', 
    method: 'Method1', 
    parameters: {} 
}).subscribe(response => { 
    if (response['status']) { 
     console.log('Processed apiUrl1'); 
    } 
}); 
this.myService.getData({ 
    url: 'apiUrl2', 
    method: 'Method2', 
    parameters: {} 
}).subscribe(response => { 
    if (response['status']) { 
     console.log('Processed apiUrl2'); 
    } 
}); 
this.myService.getData({ 
    url: 'apiUrl3', 
    method: 'Method3', 
    parameters: {} 
}).subscribe(response => { 
    if (response['status']) { 
     console.log('Processed apiUrl3'); 
    } 
}); 

बग: लेकिन क्या होता है कि GetData-नमूदार हमेशा apiUrl3 में सदस्यता दी गई है है।

मुझे प्रत्येक getData() को अलग-अलग सदस्यता लेने की आवश्यकता है। क्या कोई व्यक्ति कृपा करके मेरी सहायता करेगा?

अपेक्षित परिणाम:

प्रसंस्कृत apiUrl1

प्रसंस्कृत apiUrl2

प्रसंस्कृत apiUrl3

+0

मैं सभी स्टैक ओवरफ्लो स्पष्टीकरण और अन्य संसाधनों के माध्यम से पढ़ता हूं कि वास्तव में पर्यवेक्षकों और वादे क्या हैं। लेकिन यह मेरी एसिंक्रोनस कॉल के मामले में काम नहीं कर रहा है। क्या आप कृपया मदद कर सकते हैं कि मैं क्या गलत कर रहा हूं? – anusreemn

उत्तर

0

मत यकीन है कि जहां आपकी समस्या है, लेकिन यह अधिक स्पष्ट है और शायद काम करेगा।

getData(args, parentKey?):any { 
    this.apiService.get(args) 
     .map(response => { 
       data: response['data'], 
       status: ($.isEmptyObject(response) ? false : true) 
     }) 
     .do(() => console.log("finished")) 
     .catch(error => console.log("error : ", error)); 
} 
संबंधित मुद्दे