1
resposta

Deixando o código ainda mais enxuto?

Olá amigos,

da forma como foi feito, ainda temos a classe NegociacaoService muita extensa (os métodos que importam as negociações individualmente ainda existem). Para deixar o código ainda mais enxuto, passei como parâmetro o método get do serviço Http para Promise.all().

Vejam:

obterNegociacoes() {

    return Promise.all([
        this._http.get('negociacoes/semana'),
        this._http.get('negociacoes/anterior'),
        this._http.get('negociacoes/retrasada')
    ]).then(periodos => {
        return periodos
         .reduce((flattedArray, array) => flattedArray.concat(array), [])
          .map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor));
    })
    .catch(erro => {
        console.log(erro);
        throw new Error(erro);
    });        
};

O Controller ficou assim:

importaNegociacoes() {

    let service = new NegociacaoService();

    service.obterNegociacoes()
     .then(negociacoes => {
        negociacoes
         .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
        this._mensagem.texto = 'Negociações importadas com sucesso'  
    })
    .catch(erro => {
        console.log(erro);
        this._mensagem.texto(erro)
    });

};

Fez sentido? O que acham? Aqui funcionou perfeitamente. Críticas construtivas serão bem vindas.

1 resposta

Fala ai Tiago, tudo bem? Faz muito sentido, achei muito bom, parabéns.

Com isso você tem um reaproveitamento de funções.

Abraços e bons estudos.