我正在编写一个 APIAngular2
和NodeJS
,我正在为我的 ِ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
它涉及Observable
s。
这意味着它将自己订阅observable
感兴趣的(即getTasks()
在你的情况下)并等到它successful
然后执行第一个传递的回调函数,在您的情况下是:
tasks => {
console.log(tasks);
}
如果你希望它在错误时运行一些逻辑(类似于.catch()
)或完整(类似于.finally()
)你可以将该逻辑传递给subscribe
如下:
observable.subscribe(
value => somethingToDoOnlyOnSuccess(value),
error => somethingToDoOnlyOnError(error),
() => somethingToDoAlways()
);
可以找到更多示例和详细信息这里