Na atividade 3 da aula 3 do curso "JavaScript Avançado III: ES6, orientação a objetos e padrões de projetos", é dado como simplificação do código o seguinte trecho:
ConnectionFactory
.getConnection()
.then(connection => new NegociacaoDao(connection))
.then(dao => dao.listaTodos())
.then(negociacoes =>
negociacoes.forEach(negociacao =>
this._listaNegociacoes.adiciona(negociacao)))
Porém, no código acima o resultado de "new NegociacaoDao(connection)" está sendo tratado como o retorno de uma Promise (tratado com .then) o que não seria necessário pois new NegociacaoDao sempre retorna um objeto de forma que não é necessário tratá-lo com then. O que tornaria o código mais simples da seguinte forma:
ConnectionFactory
.getConnection()
.then(cn => new NegociacaoDAO(cn)
.listaTodos()
.then(negociacoes => negociacoes.forEach(negociacao => this._listaNegociacao.adiciona(negociacao))
)
)
.catch(e => console.log(e));
Certo? Ou me perdi no raciocíonio? Valeu.
https://i.imgur.com/mUQIWuL.png
==================
** Cliquei em solucionado sem querer... :P **
Edit: se o problema é o .then dentro de outro .then, poderia ser escrito desta forma:
ConnectionFactory.getConnection()
.then(cn => new NegociacaoDAO(cn).listaTodos())
.then(negociacoes => negociacoes
.forEach(negociacao => this._listaNegociacao.adiciona(negociacao)))
.catch(e => console.log(e));
A questão que me levou ao questionamento é usar um tratamento .then quando não há necessidade... Desta forma, com apenas 2 "then's" temos o mesmo resultado com menos linha de código...