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.