Antes de a classe Promise ser introduzida, havia apenas uma forma de lidar com código assíncrono: o padrão de callback.
Um callback é uma função que é passada como argumento para outra função e será chamado assim que alguma ação nessa outra função terminar. Um padrão comum para essas funções de callback é que elas recebem um "error" como primeiro parâmetro (veja o exemplo abaixo).
function callback(error, arg2, arg3) {}
E como isso se relaciona com código assíncrono?
Historicamente, os callbacks têm sido usados para nos permitir fazer algum trabalho depois que uma tarefa assíncrona terminou e sem bloquear o programa inteiro.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
No exemplo acima, a função fetchProduct (que é assíncrona) recebe um callback como segundo argumento, que decide o que fazer quando os dados do produto tiverem sido recuperados.
Os dois objetivos deste exercício são:
promisify que transforma uma função que usa o padrão de callback em uma função que retorna uma Promise. Veja o exemplo abaixo.function fetchProduct(productId, function(error, data) {
if (error) {
// Handle the error
} else {
// Make something with your data
}
})
const fetchProductAsPromise = promisify(fetchProduct);
// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
.then((data) => {})
.catch((error) => {});
Promise (sem usá-los)all: recebe um array de promises e é resolvido quando todas elas são resolvidas, ou é rejeitado quando uma delas é rejeitada.allSettled: recebe um array de promises e é resolvido quando todas elas são resolvidas ou rejeitadas.race: recebe um array de promises e é resolvido ou rejeitado com o valor da primeira promise que for resolvida ou rejeitada.any: recebe um array de promises e é resolvido quando uma delas for resolvida, ou é rejeitado quando todas elas forem rejeitadas.Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.