等待Angular 5方法

时间:2018-10-12 23:52:39

标签: javascript jquery angular

我对服务等级有外部要求

public getEndereco(cep: string){
        return this.http.get("http://viacep.com.br/ws/" + cep + "/json",{
            responseType: 'text'
        });
    }

此后,我捕获了返回的json并将其放入类Util中的对象

public getEndereco(cep: string): Endereco{
        let endereco = new Endereco();
        this.serviceUtil.getEndereco(cep)
          .subscribe((response)=>{
            let json = JSON.parse(response);
            endereco.cep = json.cep;
            endereco.rua = json.logradouro;
            endereco.complemento = json.complemento;
            endereco.bairro = json.bairro;
            endereco.cidade = json.localidade;
            endereco.estado = this.buscarEstadoSigla(json.uf);
          },(erro)=>{
            console.log(erro);
          });

          return endereco;
      }

在我的视野中,我得到了这个物体并将其制成:

private getEndereco(){
    this.endereco = this.util.getEndereco(this.endereco.cep);
    this.estado = this.endereco.estado;
  }

但“ this.endereco.estado”始终为空。 我知道异步的角度工作。 我如何期望对象“ this.endereco”从返回到赋值为底线之后返回?

2 个答案:

答案 0 :(得分:0)

您应该修改getEndereco以返回Observable,如下所示:

import { map } from 'rxjs/operators';

public getEndereco(cep: string): Endereco{     
    return this.serviceUtil.getEndereco(cep)
      .pipe(map((response)=>{
        let endereco = new Endereco();
        let json = JSON.parse(response);
        endereco.cep = json.cep;
        endereco.rua = json.logradouro;
        endereco.complemento = json.complemento;
        endereco.bairro = json.bairro;
        endereco.cidade = json.localidade;
        endereco.estado = this.buscarEstadoSigla(json.uf);
        return endereco;
      }));
  }

您可以这样订阅:

private getEndereco(){
    this.util.getEndereco(this.endereco.cep).subscribe(endereco => {
        this.endereco = endereco;
        this.estado = this.endereco.estado;
    });

}

答案 1 :(得分:0)

另一件事:如果是已知对象,则无需转换json中的所有内容。创建一个endereco.model.ts并将其导入。然后,您可以将其用作对象。

contains

然后建立您的模型:

    Scanner input = new Scanner(System.in);

    System.out.println("Enter a valid SSN");

    String ssn = input.nextLine();


    if (ssn.length() == 11 && 
            ssn.charAt(0)>='0' && ssn.charAt(0)<='9' && 
            ssn.charAt(1)>='0' && ssn.charAt(1)<='9' && 
            ssn.charAt(2)>='0'  && ssn.charAt(2)<='9' &&
            ssn.charAt(4)>='0'  && ssn.charAt(4)<='9' &&
            ssn.charAt(5)>='0'  && ssn.charAt(5)<='9' &&
            ssn.charAt(7)>='0'  && ssn.charAt(7)<='9' &&
            ssn.charAt(8)>='0'  && ssn.charAt(8)<='9' &&
            ssn.charAt(9)>='0'  && ssn.charAt(9)<='9' &&
            ssn.charAt(10)>='0'  && ssn.charAt(10)<='9' &&
            ssn.charAt(3)=='-' && ssn.charAt(6)=='-') 
            {
        System.out.println(ssn + " is a valid social security number");
    }
        else
            System.out.print(ssn + " is not a valid social security number");

    input.close();



}