2017-02-02 30 views
6

Angular2 ve NodeJS ile bir API'yi kodluyorum, bir görev listesi alması ve görüntülemesi gereken my API'm için hizmetler uyguluyorum. Benim getTask fonksiyonu (hatam varsa düzeltin) .map() fonksiyon değerler dizisi benim tepkisini ve biçimleri alır için.subscribe() işlevi ne yapar

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()); 
    } 
} 

: Burada görev hizmetidir. İşte şimdi, görev hizmetini kullanır görev bileşenleri:

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); 
    }) 
    } 
} 

Bu .subscribe() işlevin ne anlamak istiyorum ve ilgili tüm bilgileri bulamıyor.

+2

iyi bir başlangıç: http://reactivex.io/rxjs/manual/overview.html – Matt

+1

En basit web aramasıyla ilgili bilgileri bulmak için ** çok ** zor ** değil ** olacak. ya da rxJS belgelerine bakarak ya da Açısal özel kullanım için, diğer yerlerin yanı sıra Açısal dokümanlar. –

cevap

5

.subscribe() fonksiyon jQuery yılında .then() işlevine benzer, ancak bunun yerine promise s ile başa o Observable s ile ilgilenir.

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

Bu şekilde yazmak mümkün: this.taskService.getTask (function() {console.log (görevler);}) // Ayrıca, neden sadece görevler => ve yalnızca konsolları değil kullanıyoruz. log (görevler) –

+1

evet 'function' gösterimini kullanmak mümkündür, ancak' '' '' '' '' '' '' '' '' '' '' '' '' ''' 'anlamını kullanmanın avantajı, bunun' 'bu' 'anlamını koruduğudur, bunu gör [makale] (https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html) –

-2

: o (sizin durumunuzda getTasks() olan) ilgilenilen observable kendisini abone olabilir ve sizin durumunuzda olduğu geçirilen geri arama işlevi o successful kadar bekleyin ve ardından yürütmek anlamına gelir

subscribe ana avantajı, then sözüne kıyasla - observer.next(data) kullanarak değişiklikleri bildirebilir ve aboneleriniz her değişiklikte tepki gösterir.

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

Yani aynı olaya birden dinleyicileri varsa - hepsi her zaman gözlemci yeni verileri oluşturmak ve observer.next() arayacak değişim olayını alacaktır. Sıklıkla değiştirilebilecek verileriniz olduğunda ve dinleyicilerinize bildirmek için tek ve tahmin edilebilir akışlar istediğinizde çok kullanışlıdır. SözdizimiSözdizimi Sözdizimi then Sözdizimi işlemi bir kez beklemenize izin verir.