2017-02-02 7 views
6

मैं Angular2 और NodeJS के साथ एक एपीआई कोडिंग कर रहा हूं, मैं अपने एपीआई के लिए सेवाओं को कार्यान्वित कर रहा हूं जो कार्यों की एक सूची प्राप्त करने और इसे प्रदर्शित करने के लिए माना जाता है।क्या करता है। सदस्यता() फ़ंक्शन

import {Injectable} from '@angular/core'; 
import {Http, Headers} from '@angular/http'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class TaskService{ 
    constructor(private http:Http){ 
    console.log('Task Service Initialized...'); 
    } 
    getTasks(){ 
    return this.http.get('http://localhost:3000/api/tasks') 
     .map(res => res.json()); 
    } 
} 

मेरी getTask समारोह (मुझे ठीक कर लें मैं गलत हूँ) .map() समारोह मूल्यों की एक सरणी में मेरी प्रतिक्रिया और यह प्रारूपों लेता है के लिए: यहाँ काम सेवा है। यहाँ अब है, काम घटक है कि कार्य सेवा का उपयोग करता:

import { Component } from '@angular/core'; 
import {TaskService} from '../../services/task.service'; 

@Component({ 
    moduleId: module.id, 
    selector: 'tasks', 
    templateUrl: 'tasks.component.html', 
}) 
export class TasksComponent { 
    constructor(private taskService:TaskService){ 
    this.taskService.getTasks() 
     .subscribe(tasks =>{ 
     console.log(tasks); 
    }) 
    } 
} 

मैं समझने के लिए इस .subscribe() समारोह क्या करता है चाहते हैं और मैं किसी भी प्रासंगिक जानकारी नहीं मिल रहा।

+2

एक अच्छी शुरुआत: http://reactivex.io/rxjs/manual/overview.html – Matt

+1

यह ** बहुत ** हार्ड ** नहीं ** ** सबसे बुनियादी वेब खोज के साथ प्रासंगिक जानकारी खोजने के लिए होगा, या आरएक्सजेएस दस्तावेज़ों में, या कोणीय-विशिष्ट उपयोग के लिए, अन्य स्थानों के साथ कोणीय दस्तावेज़ों को देखकर। –

उत्तर

5

.subscribe() समारोह jQuery में .then() समारोह के समान है, लेकिन इसके बजाय promise रों से निपटने का यह Observable रों से संबंधित है।

इसका मतलब है कि यह ब्याज (जो आपके मामले में getTasks() है) की observable को ही सदस्यता लें और इंतजार जब तक यह successful है और उसके बाद निष्पादित पारित कर दिया कॉलबैक फ़ंक्शन जो आपके मामले में है जाएगा:

tasks =>{ 
    console.log(tasks); 
} 
+0

तो क्या इसे इस तरह लिखना संभव है: this.taskService.getTask (function() {console.log (कार्य);}) // // मैं भी समझना चाहता हूं कि हम कार्यों => और केवल कंसोल का उपयोग क्यों नहीं करते हैं। लॉग (कार्य) –

+1

हां 'फ़ंक्शन' नोटेशन का उपयोग करना संभव है, लेकिन 'तीर' नोटेशन (' => ') का उपयोग करने का लाभ यह है कि यह 'इस' के अर्थ को संरक्षित करता है, यह [आलेख] देखें (https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html) –

-2

subscribe का मुख्य लाभ then का वादा करने की तुलना में - आप कई बार observer.next(data) का उपयोग करके परिवर्तनों को सूचित कर सकते हैं और आपके ग्राहक प्रत्येक परिवर्तन पर प्रतिक्रिया देंगे।

new Observable(observer => observer.next(data)); 

तो तुम एक ही घटना के लिए कई श्रोताओं अगर - इन सबने परिवर्तन घटना हर बार पर्यवेक्षक नए डेटा पैदा करते हैं और observer.next() फोन करेगा प्राप्त होगा। यह बहुत उपयोगी होता है जब आपके पास डेटा होता है जिसे अक्सर बदला जा सकता है और आप अपने श्रोताओं को सूचित करने के लिए सिंगल और अनुमानित प्रवाह चाहते हैं।

वादा then आपको एक बार अपने एसिंक ऑपरेशन का इंतजार करने की अनुमति देता है।

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