Durante os exercícios, gosto de fazê-los sozinho antes de ver o gabarito. Assim, no meu código surgiu essa dúvida acima, rs.
obterNegociacoesMyWay(controller){
// Resolve todas essas promises em uma ordem dentro de uma lista array
return Promise.all([
this.obterNegociacoesDaSemana(),
this.obterNegociacoesDaSemanaAnterior(),
this.obterNegociacoesDaSemanaRetrasada()
])
.then(negociacoes => {
negociacoes
.reduce((arrayAchatado, array) => {
// eu vou dizer: "arrayAchatado, concatena aí com esse array."
return arrayAchatado.concat(array);
}, [])
.forEach(negociacao => controller._listaNegociacoes.adiciona(negociacao));
controller._mensagem.texto = "Negociações importadas com sucesso. :D";
})
.catch(erro => this._mensagem.texto = erro);
}
Então no controller bastaria passar o this:
let service = new NegociacaoService();
service.obterNegociacoesMyWay(this);