Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não utilizando promisses

Olá, boa tarde!

Por curiosidade, como eu conseguiria prevenir a reimportação das mesmas negociações não utilzando promisses ?

4 respostas

Boa tarde, Bernardo! Como vai?

Não é a Promise que previne a duplicação de negociações! O mestre Flávio utilizou a função some() para prevenir esse comportamento!

Olá Gabriel,

Sim, OK! É que estou tentando realizar a mesma coisa que o professor fez, porém utilizando essas estrutura mais simples dos primeiros módulos.

listNegociacao()
{
    let service = new NegociacaoService();

    service.getNegociacao(negociacao => 
    {
        negociacoes.forEach(negociacao => this._listNegociacao.add(negociacao));
        this._negociacoesView.update(this._listNegociacao);
    });
}

Eu pensei em algo, mas não tenho certeza. Por exemplo:

listNegociacoes()
{
    let service = new NegociacaoService();

    service.getNegociacoes(negociacoes => 
    {    
        let equal = negociacoes.filter(negociacao => 
            !this._listNegociacao.negociacoes.some(existingNegociacao => 
                JSON.stringify(negociacao) == JSON.stringify(existingNegociacao)))

        if(equal) 
        {
            negociacoes.forEach(negociacao => this._listNegociacao.add(negociacao));
            this._negociacoesView.update(this._listNegociacao);
        }
    });
}
solução!

Aah, agora entendi, meu aluno! Bom, vamos lá!

O filter() já irá te retornar um novo array apenas com os items filtrados! Ou seja, um novo array de negociações que não existiam antes!

Portanto, uma vez que vc tenha esse array de itens novos, basta adicioná-lo ao antigo fazendo o forEach() que vc fez dentro do if! E ainda mais, nem seria necessário fazer o tal if!