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

Erro usando async/await

Boa tarde!

Estou tentando resolver essa parte usando async/await ao invés de fetch/then, porém está dando um erro que não consigo corrigir de forma alguma.

Segue o código:

importarDados(): void {
    (async function importa(): Promise<void> {
        const resposta = await fetch('http://localhost:8080/dados');
        const json = await resposta.json();

        const negociacoesApi = json.map((dado: any) => {
            return new Negociacao(new Date(), dado.vezes, dado.montante);
        });

        for (let negociacaoApi of negociacoesApi) {
            console.log(negociacaoApi);
            this.negociacoes.adicionar(negociacaoApi);
        }

        this.negociacoesView.update(this.negociacoes);
    })();
}

Tentei fazer com negociacao.forEach(...), utilizar Promises.all, colocar await em tudo quanto é canto, mas esse mesmo erro persiste:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade ] Coloquei o console.log para mostrar que ele está recebendo a lista, o problema é ao invocar o this.negociacoes.adicionar(negociacaoApi). O nome do método está no infinitivo, mas também está assim no arquivo da classe.

Alguém saberia o que pode ser?

1 resposta
solução!

Consegui solucionar o problema reatribuindo o 'this' dentro do escopo do método importarDados()

importarDados(): void {
    const self = this;

    (async function(): Promise<void> {
        const resposta = await fetch('http://localhost:8080/dados');
        const json = await resposta.json();

        const negociacoesApi = json.map((dado: any) => {
            return new Negociacao(new Date(), dado.vezes, dado.montante);
        });

        for (let negociacaoApi of negociacoesApi) {
            self.negociacoes.adicionar(negociacaoApi);
        }

        self.negociacoesView.update(self.negociacoes);
    })();
}