[javascript] O que são Promises?
25/01/2019
0
boa tarde amigos, valendo devupssss :)
Quem poderia contribuir com a comunidade JavaScript explicando o que são Promises? ;-)
abraços!
Quem poderia contribuir com a comunidade JavaScript explicando o que são Promises? ;-)
abraços!
Gladstone Matos
Curtir tópico
+ 1
Responder
Post mais votado
25/01/2019
Um Promise representa um proxy para um valor que não é necessariamente conhecido quando a promise é criada. Isso permite a associação de métodos de tratamento para eventos da ação assíncrona num caso eventual de sucesso ou de falha. Isto permite que métodos assíncronos retornem valores como métodos síncronos: ao invés do valor final, o método assíncrono retorna uma promise ao valor em algum momento no futuro.
Um Promise está em um destes estados:
pending (pendente): Estado inicial, que não foi realizada nem rejeitada.
fulfilled (realizada): sucesso na operação.
rejected (rejeitado): falha na operação.
settled (estabelecida): Que foi realizada ou rejeitada.
Uma promessa pendente pode se tonar realizada com um valor ou rejeitada por um motivo (erro). Quando um desses estados ocorre, o método then do Promise é chamado, e ele chama o método de tratamento associado ao estado (rejected ou resolved). (Se a promessa foi realizada ou rejeitada quando o método de tratamento correspondente for associado, o método será chamado, deste forma não há uma condição de competição entre uma operação assíncrona e seus manipuladores que estão sendo associados.)
Como os métodos Promise.prototype.then e Promise.prototype.catch retornam promises, eles podem ser encadeados — uma operação chamada composição.
Exemplo em imagem: https://mdn.mozillademos.org/files/8633/promises.png
Um Promise está em um destes estados:
pending (pendente): Estado inicial, que não foi realizada nem rejeitada.
fulfilled (realizada): sucesso na operação.
rejected (rejeitado): falha na operação.
settled (estabelecida): Que foi realizada ou rejeitada.
Uma promessa pendente pode se tonar realizada com um valor ou rejeitada por um motivo (erro). Quando um desses estados ocorre, o método then do Promise é chamado, e ele chama o método de tratamento associado ao estado (rejected ou resolved). (Se a promessa foi realizada ou rejeitada quando o método de tratamento correspondente for associado, o método será chamado, deste forma não há uma condição de competição entre uma operação assíncrona e seus manipuladores que estão sendo associados.)
Como os métodos Promise.prototype.then e Promise.prototype.catch retornam promises, eles podem ser encadeados — uma operação chamada composição.
Exemplo em imagem: https://mdn.mozillademos.org/files/8633/promises.png
Este pequeno exemplo mostra o mecanismo de uma Promise. O método testPromise() é chamado cada vez que <button> é clicado. Isso cria uma promise que resolverá, usando window.setTimeout(), o contador de promise promiseCount (iniciando em 1) a cada 1 a 3s randomicamente. O construtor Promise() é usado para criar a promise.
A realização da promise é simplesmente registrada, por meio de configuração na função callback de realização usando p1.then(). Alguns logs mostram como a parte síncrona do método é desacoplada da conclusão assíncrona da promise.
A realização da promise é simplesmente registrada, por meio de configuração na função callback de realização usando p1.then(). Alguns logs mostram como a parte síncrona do método é desacoplada da conclusão assíncrona da promise.
var promiseCount = 0; function testPromise() { var thisPromiseCount = ++promiseCount; var log = document.getElementById('log'); log.insertAdjacentHTML('beforeend', thisPromiseCount + ') Started (<small>Sync code started</small>)<br/>'); // Criamos uma nova promise: prometemos a contagem dessa promise (após aguardar 3s) var p1 = new Promise( // a função resolve() é chamada com a capacidade para resolver ou // rejeitar a promise function(resolve, reject) { log.insertAdjacentHTML('beforeend', thisPromiseCount + ') Promise started (<small>Async code started</small>)<br/>'); // Isto é apenas um exemplo para criar assincronismo window.setTimeout( function() { // Cumprimos a promessa ! resolve(thisPromiseCount) }, Math.random() * 2000 + 1000); }); // definimos o que fazer quando a promise for realizada p1.then( // apenas logamos a mensagem e o valor function(val) { log.insertAdjacentHTML('beforeend', val + ') Promise fulfilled (<small>Async code terminated</small>)<br/>'); }); log.insertAdjacentHTML('beforeend', thisPromiseCount + ') Promise made (<small>Sync code terminated</small>)<br/>'); }
Vinnicius Gomes
Responder
Mais Posts
25/01/2019
Vinnicius Gomes
wow explicação sensacional! Obrigado Vinnicius!!!
Que bom que ficou claro Gladstone! Boa sorte no aprendizado dessa linguagem incrível!
Responder
Clique aqui para fazer login e interagir na Comunidade :)