Что делает функция .subscribe ()?

Я кодирую API с помощью Angular2и NodeJS, я внедряю службы для моего API, который должен получить список задач и отобразить его. Вот сервис задач:

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()делает эта функция, и я не могу найти соответствующую информацию.

javascript,angular,rxjs,observable,

11

Ответов: 2


13 принят

.then()Функция аналогична jQueryфункции в promise, но вместо того, чтобы иметь дело с Observableс она занимается Observableс.

Это означает, что он будет подписаться на observableинтересующий вас (что successfulв вашем случае) и дождитесь его окончания и подписаться на выполнение переданной функции обратного вызова, которая в вашем случае:tasks =>{ console.log(tasks); }

then

Главное преимущество subscribeсравнения с обещанием observer.next(data)- вы можете многократно уведомлять об изменениях, и ваши подписчики будут реагировать на каждое изменение.new Observable(observer => observer.next(data));

observer.next()

Поэтому, если у вас несколько слушателей одного и того же события - все они получат событие изменения каждый раз, когда наблюдатель генерирует новые данные и вызывается then. Это очень полезно, когда у вас есть данные, которые можно часто менять, и вы хотите, чтобы один и предсказуемый поток уведомляли ваших слушателей.

Обещание thenпозволяет вам ждать операцию async один раз.

JavaScript, угловой, rxjs, наблюдаемый,
Похожие вопросы