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

Ari*_*ult 17 javascript observable rxjs angular

我正在使用Angular2和编写API 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());
  }
}
Run Code Online (Sandbox Code Playgroud)

对于我的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);
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

我想了解这个.subscribe()功能的作用,我找不到任何相关信息.

Tha*_*uni 25

.subscribe()函数类似于Promise.then()函数in .catch(),但它不处理.finally()s而是处理jQuerys.

这意味着它将订阅自己promise的兴趣(Observable在你的情况下)并等到它observable然后执行传递的回调函数,在你的情况下:

tasks => {
    console.log(tasks);
} 
Run Code Online (Sandbox Code Playgroud)

  • 是的,可以使用 `function` 表示法,但是使用 `arrow` 表示法(`=>`)的优点是它保留了 `this` 的含义,参见这篇 [文章](https:// basarat.gitbooks.io/typescript/content/docs/arrow-functions.html) (2认同)