如果我在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(...)` }