2016-11-04 26 views
5

मेरे एंगुलर 2-टाइपस्क्रिप्ट ऐप में, मैं केवल समानांतर HTTP कॉल किए जाने के बाद केवल एक पर्यवेक्षक लौटने के लिए फोर्कजोइन का उपयोग कर रहा हूं।फोर्कजोइन द्वारा लौटाए गए अवलोकन से सदस्यता कैसे प्राप्त करें?

अंक: सदस्यता कॉलबैक अनिश्चित काल के लिए निष्पादित किया जा रहा रखता है

यहाँ मेरी कोड है:

http.service

import {Http} from "@angular/http"; 

constructor (private _http: HTTP) {} 

makeGetRequest(....) { 
    return this._http.get(URL) 
      .map (res => res.json) 
      .toPromise(); 

my.service

import {Observable} from "rxjs/Observable"; 
import {HttpService} from "http.service" 

constructor (private _httpService: HttpService) {} 

myMethod(): Observable<any[]> { 
return Observable.forkJoin(
      this._httpService.makeGetRequest(
       URL1 
      ), 
      this._httpService.makeGetRequest(
       URL2 
      ) 
     ) 
} 

my.component

import MyService from "my.service"; 
import Subscription from "rxjs"; 

constructor (private _service: MyService) {} 

mySub: Subscription; 

ngOnInit() { 
    this.mySub = this._service.myMethod.subscribe(data => { 
     data.forEach(console.log(data)); 
     this.mySub.unsubscribe(); 
    } 
} 

मैं क्या करने की कोशिश की (एक ही मुद्दा):

  • वापसी बल्कि एक वादा
  • my.component उपयोग की तुलना में Http.service में एक नमूदार प्रथम() सदस्यता लें() सदस्यता लें()
  • इसे डाल दें। mySub.unsubscribe(); बल्कि सदस्यता ले कॉलबैक अंदर से ngOnInit के अंत (भी setTimeout (() => के साथ ....))
+1

'सदस्यता कॉलबैक अनिश्चित काल तक निष्पादित किया जा रहा है' के साथ आपका क्या मतलब है? – Picci

+2

सवाल समझ में नहीं आता है। forkJoin से * पूरा * observables परिणाम जुड़ जाता है और सदस्यता रद्द कर दी नहीं होना चाहिए, क्योंकि यह एक भी महत्व है। आप के साथ * अनिश्चित काल के लिए क्रियान्वित किया जा रहा है, तो मुसीबतों *, कृपया, प्रदान करते हैं एक [MCVE] (http://stackoverflow.com/help/mcve) है जो आपकी समस्या – estus

+0

को दोहराने कर सकते हैं @estus तुम सही हो। जाहिरा तौर पर इस वजह से सदस्यता दो बार instantiated किया गया था और इस मुद्दे की वजह से हो रहा था। इस सवाल का जवाब के लिए स्वतंत्र महसूस, मैं इसे स्वीकार करता हूँ;) – dragonmnl

उत्तर

9

forkJoin reference कहते हैं, यह

समानांतर में चलाता है सब नमूदार दृश्यों में और अपने अंतिम तत्व इकट्ठा करो।

इसका मतलब है कि ऑपरेटर पूरा observables से मान हो जाता है और एक पूरा साथ नमूदार एकल मान देता है। इससे सदस्यता समाप्त करने की कोई आवश्यकता नहीं है।

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