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

Converter uma Promise em Objeto

No curso foi apresentado o retorno boolean de uma promise com o get.

ehAgendamentoDuplicado(agendamento: Agendamento){
        let key = this._getKey(agendamento);

        return this._storage
        .get(key)
        .then(dado => {
            return dado ? true : false;
        })
    }

Como faria para que o retorno fosse o próprio objeto encontrado e não um boolean ou uma promise.

Fiz algumas tentativas porem não obtive sucesso.

let teste: Agendamento = this._dao.buscaAgendamento(agendamento);
6 respostas

No return do then você pode devolver o tipo que quiser, inclusive objeto.

Seu teste fere o funcionamento de uma promise. Você deve capturar o resultado encadeando uma chamada ao then e você não fez isso.

Obrigado pelo Retorno Flavio,

Você pode passar um exemplo do jeito correto de como implementar isso?

Se o método recebe um id e retorna um objeto:

this._dao.buscaAgendamento(id).then (agendamento => console.log (agendamento));

Mas espera um pouco. Eu faço isso que você quer o tempo todo no curso. Quando você lista todos no dao. É a mesma lógica, só que retorno uma lista.

Desculpa minha ignorância Flavio, mas esta difícil para mim entender o conceito. Vou explicar melhor o que estou tentando fazer. No sistema que estou fazendo eu tento fazer uma busca passando um ID, quando eu peço para mostrar o resultado da função na console da tudo certo, porem quanto tento armazenar o resultado em outro objeto do mesmo tipo que estou buscando aparece um erro.

[ts] Type 'void' is not assignable to type 'Agendamento'.
let agendamento: Agendamento

Aqui esta o meu código.

busca(key: string){
      return this._storage
             .get(key)
             .then(dado => {console.log(dado)});
}

let agendamento: Agendamento;
this._dao.busca(key).then(dado => agendamento= dado);

Mostre onde estou errando por favor Mestre!

solução!

Você não pode declara a variável fora do then. No then você pega o valor e faz tudo que precisa dentro dele porque é um código assíncrono.

this._dao.busca(key).then(agendamento =>{
    console.log (agendamento);

});

É a promise de busca que retorna o objeto do tipo que você quer.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software