Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Apenas uma refatoração

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

1 resposta
solução!

Fala ai Lucio, tudo bem? Muito bom, parabéns pela solução.

Apenas uma observação, o .flat ainda é muito recente, garanta que você está usando algum transpilador para transformar seu código moderno em algo mais antigo.

Se não pode quebrar em muitos navegadores.

Espero ter ajudado.