.subscribe()函数有什么作用?

时间:2017-02-02 11:20:59

标签: javascript angular rxjs observable

我正在使用Angular2NodeJS对API进行编码,我正在为我的API实现服务,该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()函数的作用,我找不到任何相关信息。

2 个答案:

答案 0 :(得分:17)

.subscribe()功能类似于.then()中的jQuery功能,但不是处理promise,而是处理Observable s。

这意味着它会订阅感兴趣的observable(在你的情况下是getTasks())并等到successful,然后执行你传递的回调函数案例是:

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

答案 1 :(得分:-5)

subscribe与承诺then相比的主要优势 - 您可以多次使用observer.next(data)通知更改,并且您的订阅者将对每次更改做出反应。

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

因此,如果您有多个同一事件的监听器 - 每次观察者生成新数据并调用observer.next()时,所有监听器都会收到更改事件。当您拥有可以经常更改的数据并且您希望单个且可预测的流量通知您的侦听器时,它非常有用。

Promise then允许您等待一次异步操作。