我必须在ngOnInit()期间执行2个方法,但是仅在method1()完全完成时才必须执行method2()。我没有执行HTTP请求,这两个方法都属于同一组件。
ngOnInit() {
this.method1();
this.method2(); //need to be executed only when method1() is finished
}
method1() {
//do something
}
method2() {
//do something but need to be started only when method1 is finished
}
此问题的最佳解决方案是什么?
答案 0 :(得分:1)
您的代码完全有效。如果您不执行任何异步操作,则在另一个之后执行一个函数,语句和表达式是默认行为...
即使调用异步操作,所有其余的语句和表达式仍将以同步方式执行,直到到达调用堆栈的末尾。异步操作将放到事件循环中,以便稍后执行。
异步操作的例子不仅是HTTP调用,还有setTimeout
和setInterval
。
您可以了解有关事件循环here的更多信息。
答案 1 :(得分:-2)
如果他们不执行异步操作,为什么不对method2
内的method1
进行自己的操作呢?
ngOnInit() {
this.method1();
}
method1() {
//do something
//completed running method1 operations so call this.method2 now
this.method2();
}
method2() {
//do something but need to be started only when method1 is finished
}