Hey yo, só queria compartilhar a minha solução. Em dado momento da aula surgiu o problema de receber um array composto por outros arrays, e para conseguir transformar tudo um array simples o instrutor usou um método reduce:
importaNegociacoes() {
let service = new NegociacaoService();
Promise.all([
service.obterNegociacoesDaSemana(),
service.obterNegociacoesDaSemanaAnterior(),
service.obterNegociacoesDaSemanaRetrasada()]
).then(negociacoes => {
//aqui
negociacoes
.reduce((arrayAchatado, array) => arrayAchatado.concat(array), [])
.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
this._mensagem.texto = 'Negociações importadas com sucesso';
})
.catch(erro => this._mensagem.texto = erro);
}
No entanto por sorte encontrei essa nova funcionalidade do ES19: flat.Eela consegue desaninhar um array facilmente, exemplo:
let arrayComposto = [1, 2, 3, [4, 5, 6, [7, 8, 9]]];
let arrayPlanificado = arrayComposto.flat(Infinity);
console.log(arrayPlanificado) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
Aplicando essa lógica meu código ficou assim:
importaNegociacoes() {
let service = new NegociacaoService();
Promise.all([
service.obterNegociacoesDaSemana(),
service.obterNegociacoesDaSemanaAnterior(),
service.obterNegociacoesDaSemanaRetrasada()
])
.then(negociacoes => {
negociacoes.flat(Infinity).forEach(negociacao =>
this._listaNegociacoes.adiciona(negociacao))
this._mensagem.texto = "Tudo suave man";
})
.catch(erro => {
this._mensagem.texto = "Deu treta na promise vey";
})
}
Referencias: https://medium.com/@selvaganesh93/javascript-whats-new-in-ecmascript-2019-es2019-es10-35210c6e7f4b