Antes de a classe Promise existir, só havia uma forma de lidar com código assíncrono: o padrão de callback.
Um callback é uma função que é passada como argumento a outra função e que será chamada assim que alguma ação nessa outra função terminar. Um padrão comum para essas funções de callback é aceitarem um "error" como primeiro parâmetro (vê o exemplo abaixo).
function callback(error, arg2, arg3) {}
E que relação tem isto com o código assíncrono?
Historicamente, os callbacks têm sido usados para nos permitir fazer algum trabalho depois de uma tarefa assíncrona terminar, e sem bloquear o programa todo.
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 obtidos.
Os dois objetivos deste exercício são:
promisify que transforma uma função que usa o "callback pattern" numa função que devolve um Promise. Vê 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 incorporados (sem os usar)all: recebe um array de promises e resolve quando todas elas estiverem resolvidas, ou rejeita quando uma delas for rejeitada.allSettled: recebe um array de promises e resolve quando todas elas forem resolvidas ou rejeitadas.race: recebe um array de promises e resolve ou rejeita com o valor da primeira promise que for resolvida ou rejeitada.any: recebe um array de promises e resolve quando uma delas for resolvida, ou rejeita quando todas elas forem rejeitadas.Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.