谁能告诉我为什么getTasks()未定义?

时间:2020-05-12 16:36:14

标签: angular typescript rxjs

我正在尝试从API获取任务,并且返回正确,数据正确无误。 但是当我尝试将其记录到控制台时,它给出了未定义的信息。

这是我的代码:

tasksEvents: Task[];


getTasks() {
    this._taskService.getTasks()
    .subscribe(
        res => { this.tasksEvents = res },
        err => console.error(err)
    )
}

ngOnInit(): void {
    this.getTasks();
    console.log(this.getTasks(); <------ Undefined
}

正如我所说,它可以很好地返回我想要的数据,但是我想用getTasks()做更多的事情。

这是task.service.ts中的代码:

taskUrl = 'http://127.0.0.1:8000/api/tasks';

getTasks() {
    return this._http.get<Task[]>(this.taskUrl);
}

1 个答案:

答案 0 :(得分:0)

getTasks()是异步的,如果不使用诸如subscribe()之类的机制或诸如tap/do之类的其他RxJS运算符来进行日志记录之类的副作用,您将无法注销基础发出的值。更新您的代码,以使getTasks()返回可观察值(删除subscribe()),并在subscribe()中使用ngOnInit()来设置class属性的值并注销该值(如果需要):

tasksEvents: Task[];

getTasks() {
  return this._taskService.getTasks();
}

ngOnInit(): void {
  this.getTasks().subscribe(res => {
    this.tasksEvents = res;
    console.log(res);
    console.log(this.tasksEvents);
  });
}

希望有帮助!