Avant l'introduction de la classe Promise, il n'y avait qu'une seule façon de gérer le code asynchrone : le modèle de rappel.
Une fonction de rappel est une fonction qui est passée comme argument à une autre fonction et qui sera appelée une fois qu'une action dans cette autre fonction est terminée. Un modèle courant pour ces fonctions de rappel est qu'elles acceptent une erreur comme premier paramètre (voir l'exemple ci-dessous).
function callback(error, arg2, arg3) {}
Quel est le rapport avec le code asynchrone ?
Historiquement, on utilisait les fonctions de rappel pour pouvoir effectuer un travail une fois une tâche asynchrone terminée, sans bloquer tout le programme.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
Dans l'exemple ci-dessus, la fonction fetchProduct (qui est asynchrone) prend une fonction de rappel comme second argument qui décide quoi faire lorsque les données du produit ont été récupérées.
Les deux objectifs de cet exercice sont :
promisify qui transforme une fonction utilisant le « modèle de rappel » en une fonction qui renvoie une Promise. Regarde l'exemple ci-dessous.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 (sans les utiliser)all : prend un tableau de promesses et se résout quand toutes sont résolues, ou est rejetée quand une seule est rejetée.allSettled : prend un tableau de promesses et se résout quand toutes sont soit résolues, soit rejetées.race : prend un tableau de promesses et se résout ou est rejetée avec la valeur de la première promesse qui se résout ou est rejetée.any : prend un tableau de promesses et se résout quand une d'entre elles se résout, ou est rejetée quand toutes sont rejetées.Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.