Проблемы с ассинкцией Angular IO - PullRequest
0 голосов
/ 29 сентября 2018

У меня проблема с ассинкцией Angular IO.У меня есть код:

 private getPeople(serachOption: number, serachText: string): void{
  if(serachOption == 0){
    this.service.getPeopleNome(serachText)
    .subscribe((response)=> {
      this.limparCampos();
      if(response != null){
        this.People = response;
      }
    }, (erro)=> {
      console.log(erro);
    });
  }else if(serachOption == 1){
    this.service.getPeopleCpf(serachText)
    .subscribe((response)=> {
      this.limparCampos();
      if(response != null){
        this.People.push(response);
      }
    }, (erro)=> {
      console.log(erro);
    });
  }else if(serachOption == 2){
    this.service.getPeopleSus(serachText)
    .subscribe((response)=> {
      this.limparCampos();
      if(response != null){
        this.People.push(response);
      }
    }, (erro)=> {
      console.log(erro);
    });
  }

  if(this.People == undefined){
    Console.log("List Empty");
  }
 }

У меня есть несколько звонков на мои услуги в соответствии с моей опцией поиска.Но даже если это принесет результаты, приложение всегда будет отображать сообщение «Список пуст».Я теперь, что причина в асинхронности, но я не знаю, как я это исправлю.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Просто удалите это

if(this.People == undefined){
    Console.log("List Empty");
  }

, если вы хотите записать, что this.People имеет значения в нем, тогда вы должны войти после этого кода или в else условии

if(response != null){
        this.People = response;
      }

Для информации: Вы никогда не знаете, что this.People - это undefined или null, поэтому вам просто нужно добавить проверку вот так

if(!this.People){
    Console.log("List Empty");
  }
0 голосов
/ 29 сентября 2018

причина, по которой это не работает, в действительности заключается в асинхронном вызове сервисных функций.

вам, вероятно, следует передать дополнительный параметр в функцию getPeople, который будет функцией обратного вызова.Затем вы должны вызвать эту функцию обратного вызова после получения данных от вашего сервиса.Там вы можете вернуть свой массив this.people в качестве параметра функций обратного вызова.

...