【问题标题】:subscribing to a service in constructor is executing after ngOnInit in angular2在 angular2 中的 ngOnInit 之后,在构造函数中订阅服务
【发布时间】: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


【解决方案1】:

您正在订阅一个事件,并且是在正确的时间进行的,唯一的问题是该事件在一段时间后被触发。

如果您使用的是角度路由器,您可以检查resolve 功能,这将确保在加载组件之前解析您的 observable

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2021-01-25
    • 2019-10-04
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2022-07-31
    • 1970-01-01
    相关资源
    最近更新 更多