No NegociacaoService.js, método adiciona ele retorna uma Promise. Como a Promise não é instanciada, a Promise que é retornada para o NegociacaoController é a de Connection? (aula 04 video 05)
No NegociacaoService.js, método adiciona ele retorna uma Promise. Como a Promise não é instanciada, a Promise que é retornada para o NegociacaoController é a de Connection? (aula 04 video 05)
Boa tarde!
O método adiciona()
de NegociacaoController
não retorna valor algum. Talvez, para eu entender melhor a sua pergunta, seja interessante você postar o código dessa parte para que eu possa pontuá-lo.
É desse código que você esta se referindo?
adiciona(event) {
event.preventDefault();
let negociacao = this._criaNegociacao();
new NegociacaoService()
.cadastra(negociacao)
.then(mensagem => {
this._listaNegociacoes.adiciona(negociacao);
this._mensagem.texto = mensagem;
this._limpaFormulario();
}).catch(erro => this._mensagem.texto = erro);
}
Ah, você esta se referindo a NegociacaoService
, não NegociacaoController
, desculpe. Todavia, não há o método adiciona()
em NegociacaoService, é cadastra()
. É a este que você esta se referindo?
Então, vamos lá:
class NegociacaoService {
constructor() {
this._http = new HttpService();
}
// código anterior omitido
cadastra(negociacao) {
return ConnectionFactory
.getConnection()
.then(conexao => new NegociacaoDao(conexao))
.then(dao => dao.adiciona(negociacao))
.then(() => 'Negociação cadastrada com sucesso')
.catch(erro => {
throw new Error("Não foi possível adicionar a negociação")
});
}
}
O cadastra()
retorna uma promise, aquela que é retornada por ConnectionFactory.getConnection()
. É isso mesmo que você colocou meu aluno! Quem chamar service.cadastra()
esta recebendo uma promise, por isso pode fazer .then()
.
Sim era o método cadastrada. Acabei trocando o nome do método pq copiei com mesmo nome do controller XD. Obrigado pela rápida resposta.