Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ReferenceError: nogociacoes is not defined

Problema ao executar o código com a Promise.Eu iniciei o servidor, usei o comando nmp start para escutar na porta 3000 e abri o index.html.Ao clicar em Importar Negociações a mensagem de erro exibida é a ReferenceError: nogociacoes is not defined. Nao sei o que está acontecendo.Vou deixar o trecho do código de NegociacaoController e do NegociacaoService, logo abaixo :

Trecho do NegociacaoController.js

class NegociacaoController {

    constructor() {

        let $ = document.querySelector.bind(document);
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
        /* Jeito antigo:  this._listaNegociacoes = new ListaNegociacoes(model =>
            this._negociacoesView.update(model));  */
        //let self = this;// copiando o valor de this para usar dentro do handler

        this._listaNegociacoes = new Bind(new ListaNegociacoes(),
          new NegociacoesView($('#negociacoesView')),
          'adiciona', 'esvazia');

        this._mensagem = new Bind(new Mensagem(),
            new MensagemView($('#mensagemView')),
            'texto');
    }
 importarNegociacoes(){

        let service = new NegociacaoService();

        service.obterNegociacoesDaSemana()
             .then(negociacoes => {
                nogociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                this._mensagem.texto = 'Negociações da semana obtida com sucesso';
            })
            .catch(erro => this._mensagem.texto = erro);

          service.obterNegociacoesDaSemanaAnterior()
              .then(negociacoes => {
                    nogociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                    this._mensagem.texto = 'Negociações da semana obtida com sucesso';
               })
               .catch(erro => this._mensagem.texto = erro);

          service.obterNegociacoesDaSemanaRetrasada()
              .then(negociacoes => {
                    nogociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                    this._mensagem.texto = 'Negociações da semana obtida com sucesso';
               })
               .catch(erro => this._mensagem.texto = erro);

Agora o trecho do NegociacaoService:

class NegociacaoService{

    obterNegociacoesDaSemana(){

        return new Promise((resolve, reject) => {

            let xhr = new XMLHttpRequest();
            xhr.open('Get', 'negociacoes/semana' );
            xhr.onreadystatechange = () =>{


              if(xhr.readyState == 4){
                  if(xhr.status == 200){
                        //console.log("Obtendo as negociações do servidor.");
                        resolve(JSON.parse(xhr.responseText)
                            .map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
                            //this._mensagem.texto = "Negociações importadas com sucesso.";

                  } else{
                        console.log(xhr.responseText);
                        reject('Não foi possível obter as negociações');
                    }
              }
            };

            xhr.send();
        });
    }

    obterNegociacoesDaSemanaAnterior(){  ....}
1 resposta
solução!

Boa tarde, Antonio! Como vai?

Veja no trecho a seguir que nos 3 métodos then() vc declara que recebe uma função cujo parâmetro se chama negociacoes mas dentro da função vc utiliza nogociacoes. Por isso ocorre esse erro. Onde está nogociacoes troque para negociacoes e veja se as coisas funcionam da forma como vc esperava.

service.obterNegociacoesDaSemana()
             .then(negociacoes => {
                nogociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                this._mensagem.texto = 'Negociações da semana obtida com sucesso';
            })
            .catch(erro => this._mensagem.texto = erro);

          service.obterNegociacoesDaSemanaAnterior()
              .then(negociacoes => {
                    nogociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                    this._mensagem.texto = 'Negociações da semana obtida com sucesso';
               })
               .catch(erro => this._mensagem.texto = erro);

          service.obterNegociacoesDaSemanaRetrasada()
              .then(negociacoes => {
                    nogociacoes.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                    this._mensagem.texto = 'Negociações da semana obtida com sucesso';
               })
               .catch(erro => this._mensagem.texto = erro);

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!