【发布时间】:2017-09-01 00:55:21
【问题描述】:
众所周知,构造函数首先执行..但是当我尝试在构造函数中订阅服务时,该服务在 ngOnInit 之后执行。但是我想在执行 ngOnInt 之前订阅服务。你能帮帮我吗?
这是我的示例代码
constructor(private otherRoleService: OtherRoleService) {
this.data = [{
"roleid" : "0"
}];
this.otherRoleService.getOtherRoles(this.data).subscribe(res => console.log('constructor'), err => this.fail(err));}
ngOnInit(){
console.log('OnInit')
}
【问题讨论】:
-
你需要了解异步。您在 ngOnInit 之前订阅。但是您稍后会从订阅中收到第一个异步事件。就像,如果你订阅了一份时事通讯,然后吃了一个吐司,你的吐司就会在你收到时事通讯的第一封邮件之前被吃掉,可能一两天后。
-
@JBNizet 这不取决于吐司的大小吗?我的意思是,如果你有一个用全尺寸面包制成的吐司,可能需要一段时间才能吃完
-
有一个关于事件循环的好视频,它将帮助您了解 javascript 的工作原理以及为什么您在 onInit 之后订阅数据:youtube.com/watch?v=8aGhZQkoFbQ
标签: angular angular2-services angular2-directives