我正在编写一个 APIAngular2NodeJS,我正在为我的 ِ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()函数确实如此,但我找不到任何相关信息。

答案

.subscribe()功能类似于Promise.then(),.catch().finally()中的方法jQuery,但不是处理promise它涉及Observables。

这意味着它将自己订阅observable感兴趣的(即getTasks()在你的情况下)并等到它successful然后执行第一个传递的回调函数,在您的情况下是:

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

如果你希望它在错误时运行一些逻辑(类似于.catch())或完整(类似于.finally())你可以将该逻辑传递给subscribe如下:

observable.subscribe(
  value => somethingToDoOnlyOnSuccess(value),
  error => somethingToDoOnlyOnError(error),
  () => somethingToDoAlways()
);

可以找到更多示例和详细信息这里

来自: stackoverflow.com