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

前端之家收集整理的这篇文章主要介绍了angular – 在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(...)`
}

猜你在找的Angularjs相关文章