Как вызвать функцию после другой функции в angular 8 - PullRequest
0 голосов
/ 28 мая 2020

У меня есть 2 функции: одна func1 и func2, мне нужно выполнить func2 только после выполнения func1. Вот код ниже

home.component.ts

import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})

export class HomeComponent implements OnInit {

 constructor() { }

 ngOnInit() {
    this.func1();
    this.func2();
 }

 func1(){
    console.log('function1')
 }

 func2(){
    console.log('function2')
 }
}

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Думаю, это решит вашу проблему.

import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})

export class HomeComponent implements OnInit {

 constructor() { }

 ngOnInit() {
    this.func1();
 }

 func1(){
    console.log('function1')
    this.func2();
 }

 func2(){
    console.log('function2')
 }
}
0 голосов
/ 28 мая 2020

Здесь вам нужно знать несколько вещей. Если ваша функция func1 не является асинхронной функцией, вам не нужно ничего делать, так как func2 () будет выполняться только после завершения func1 (). Но если func2 () является асинхронной функцией, в которой вы выполняете некоторую HTTP-операцию, вам необходимо использовать функцию обратного вызова.

Позвольте показать вам.

Тип - 1 (с использованием asyn c и ожидания)

async ngOnInit() {
  await this.func1();
  this.func2();
}

func1(){
  this.func1().then(() => {
    this.func2();
  })
}

func2(){
  console.log('function2')
}

Тип - 2 (с использованием then)

ngOnInit() {
  this.func1().then(() => {
    this.func2();
  })
}

func1(){
  return new Promise((resolve, reject) => {
     return resolve(true);
  });
}

func2(){
  console.log('function2')
}

Тип - 2 (более простой)

function func2(){
  func1()
  // now wait for firstFunction to finish...
  // do something else
};

Есть несколько способов справиться с этой ситуацией в зависимости от первой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...