加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 在ngOnInit异步上调用函数?

发布时间:2020-12-17 10:19:47 所属栏目:安全 来源:网络整理
导读:如果我在ngOnInit()中调用一个函数来进行可观察的调用以获取数据,那么ngOnInit中的this.getSomething()调用仍然是异步还是ngOnInit等到this.getSomething()返回结果?基本上“doSomethingElse”在this.getSomething()完成之前或之后在ngOnInit()中执行了吗?
如果我在ngOnInit()中调用一个函数来进行可观察的调用以获取数据,那么ngOnInit中的this.getSomething()调用仍然是异步还是ngOnInit等到this.getSomething()返回结果?基本上“doSomethingElse”在this.getSomething()完成之前或之后在ngOnInit()中执行了吗?
ngOnInit() {
    this.getSomething();
    doSomethingElse;
}

getSomething() {
    this.someService.getData()
        .subscribe(
            result => {
                this.result = result;
            },error => this.errorMessage = <any>error);
}
ngOnInit()本身不等待异步调用.
您可以自己链接代码,它只在异步调用完成时执行.

例如,当数据到达时,您在subscribe(…)中放置的内容将被执行.

订阅(…)之后的代码立即执行(在异步调用完成之前).

有一些路由器生命周期钩子等待返回的promises或observable,但没有组件或指令生命周期钩子.

更新

为了确保在getData()完成后执行this.getSomething()之后的代码,请将代码更改为

ngOnInit() {
    this.getSomething()
    .subscribe(result => {
      // code to execute after the response arrived comes here
    });
}

getSomething() {
    return this.someService.getData() // add `return`
        .map( // change to `map`
            result => {
                this.result = result;
            },//  error => this.errorMessage = <any>error); // doesn't work with `map` 
  // (could be added to `catch(...)`
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读