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

Apenas um comentário sobre otimização na parte 'Opinião do Instrutor'

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
4 respostas
solução!

Perfeito, ou você pode fazer assim, algo que ensino no terceiro módulo do curso:

service
      .obterNegociacoes()
      .then(negociacoes => negociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
      .then(() => this._mensagem.texto = 'Negociações do período importadas com sucesso')
      .catch(error => this._mensagem.texto = error);

Lá você completará seu entendimento de promises. No entanto, essa nova estratégia que eu mostrei não invalida sua solução. Inclusive vou até alterar a resposta do instrutor, pois ainda não expliquei os pulos do gato das promises.

Obrigado pelo feedback.

Pronto, alterei lá com sua contribuição. Abraço meu aluno!

promisse.then().then()? Agora buguei! kkkkkkkk Acho que vou passar lá no terceiro módulo curso pra ver isso aí!

Obrigado e abraços!

Hehehe! Pode sim! Eu uso desse artifício para escrever um código lindo quando criamos a ConnectionFactory e o NegociacaoDao para trabalhar com o indexedDB.

Sucesso e bom estudo meu aluno!