Angular IO异步问题

时间:2018-09-29 13:49:36

标签: javascript angular frontend

我对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 :(得分:0)

不起作用的原因确实是服务函数的异步调用。

您可能应该在getPeople函数中传递一个附加参数,该参数将是一个回调函数。您应该从服务中获取数据后再调用此回调函数。在那里,您可以将this.people数组作为回调函数的参数返回。

答案 1 :(得分:0)

只需删除此

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

如果要记录this.People中包含值,则应在此代码之后或处于else条件下记录

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

有关信息::您永远都不知道this.Peopleundefined还是null,因此您应该像这样添加支票

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