仅当另一个方法使用Angular 6完成时才调用方法

时间:2018-09-12 17:10:11

标签: angular typescript

我必须在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
  }

此问题的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:1)

您的代码完全有效。如果您不执行任何异步操作,则在另一个之后执行一个函数,语句和表达式是默认行为...

即使调用异步操作,所有其余的语句和表达式仍将以同步方式执行,直到到达调用堆栈的末尾。异步操作将放到事件循环中,以便稍后执行。

异步操作的例子不仅是HTTP调用,还有setTimeoutsetInterval

您可以了解有关事件循环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
}