Pessoal, percebi que a implementação do método importarNegociacoes()
dentro do trecho de comparação JSON.stringify(negociacao) == JSON.stringify(negociacaoExistente)))
estão sendo comparados objetos diferentes.
O que está sendo retornado do método obterNegociacoes()
é um conjunto de arrays que correspondem as negociacoes da semana, anterior e retrasada. Com isso, o que está no objeto negociacaoExistente
da arrow function de some
e o objeto negociacao
da arrow function da filter
são respectivamente diferentes e consequentemente entrei em uma importação infinita ao entrar no método init
:
` Objeto negociacao: [{"data":"2018-11-07T11:05:24.495Z","quantidade":1,"valor":750,"volume":750},{"data":"2018-11-07T11:05:24.495Z","quantidade":2,"valor":950,"volume":1900},{"data":"2018-11-07T11:05:24.495Z","quantidade":3,"valor":950,"volume":2850}]
Objeto negociacaoExistente: {"data":"2018-11-07T11:05:24.495Z","quantidade":1,"valor":750,"volume":750} `
A minha comparação entre JSON.stringify está tentando comparar esses dois aí acima.
A questão que estou em dúvida é se devo alterar o método obterNegociacoes
para trazer em um único array todas as negociacoes da semana, anterior e retrasada, ou se tenho que alterar direto no importarNegociacoes
`importaNegociacoes(){
console.log('Entrei na função importaNegociacoes');
let service = new NegociacaoService();
service
.obterNegociacoes()
.then(negociacoes =>
negociacoes.filter(negociacao =>
!this._listaNegociacoes.negociacoes.some(negociacaoExistente =>
JSON.stringify(negociacao) == JSON.stringify(negociacaoExistente)))
)
.then(negociacoes => negociacoes.forEach(negociacao => {
this._listaNegociacoes.adiciona(negociacao);
this._mensagem.texto = 'Negociações do período importadas'
}))
.catch(erro => this._mensagem.texto = erro);
}`
Segue também o meu código da funcao obterNegociacoes
da classe NegociacaoService
`obterNegociacoes(){
return Promise.all(
[this.obterNegociacoesDaSemana(),
this.obterNegociacoesDaSemanaAnterior(),
this.obterNegociacoesDaSemanaRetrasada()]
)
.then(negociacoes => {
negociacoes
.reduce((dados, periodo) => dados.concat(periodo), []);
return negociacoes;
})
.catch(erro => {
throw new Error(erro);
});
}
}`