O último trecho de código apresentado diz o seguinte:
class NegociacaoController {
// constructor e outros métodos omitidos
importaNegociacoes() {
let service = new NegociacaoService();
service
.obterNegociacoes()
.then(negociacoes => negociacoes.forEach(negociacao => {
this._listaNegociacoes.adiciona(negociacao);
this._mensagem.texto = 'Negociações do período importadas'
}))
.catch(erro => this._mensagem.texto = erro);
}
// código posterior omitido
}
A arrow function do jeito que está vai iterar pelo this._mensagem.texto = 'Negociações do período importadas'
diversas vezes. É possível evitar isso "descendo" o trecho da mensagem para a arrow function anterior:
class NegociacaoController {
// constructor e outros métodos omitidos
importaNegociacoes () {
let service = new NegociacaoService()
service
.obterNegociacoes()
.then(negociacoes => {
negociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
this._mensagem.texto = 'Negociações do período importadas com sucesso';
})
.catch(error => this._mensagem.texto = error);
}
// código posterior omitido
}
É possível testar isso com uma pequena alteração no código do ProxyFactory.js para mostrar as passagens pelo set :
// código anterior omitido
set (target, prop, value, receiver) {
let retorno = Reflect.set(target, prop, value, receiver)
if (props.includes(prop)) {
console.log(`interceptado ${prop}`) // adicionado ao código
acao(target)
}
return retorno
}
// código posterior omitido