Ceci n'est pas spécifique aux Promesses, mais seulement aux fonctions de rappel.
new Promise((resolve) => {});
1 crée une Promise dont le callback ne prend que l'élément resolve
paramètre. Il n'est pas possible d'appeler la fonction de rejet qui serait autrement fournie. 2
new Promise((resolve, reject) => {});
crée une Promise dont le callback prend les deux paramètres, y compris celui du rejet.
Les deux exemples ci-dessus illustrent le fonctionnement des paramètres de position. Le premier paramètre de la fonction de rappel est toujours la fonction resolve, le second est toujours la fonction reject.
new Promise((reject, resolve) => {});
créera une Promesse dans laquelle vous pourrez résoudre avec reject
et rejeter avec resolve
.
Vous pourriez throw
dans la portée de la fonction de rappel ou resolve(Promise.reject())
pour provoquer un rejet :
new Promise((resolve) => {
throw new Error("42");
// or `resolve(Promise.reject(new Error("42")));`
})
.catch(console.warn); // Prints warning “Error: "42"” in the console.
Vous ne pouvez pas utiliser new Promise((resolve) => {}, (reject) => {});
puisque le Promise
ne prend qu'un seul argument. La deuxième fonction de rappel sera simplement ignorée.
1 : (resolve) => {}
est, bien sûr, équivalent à resolve => {}
. Mais les paramètres de la fonction flèche sont en fait toujours nécessitent des parenthèses. Les paramètres simples et uniques sont les seule exception où ils peuvent être omis. Voir le Article MDN sur la syntaxe de la fonction flèche .
2 : Utilisation d'une fonction régulière, new Promise(function(resolve){});
o new Promise(function(){});
vous pourriez accéder à n'importe quel argument con arguments[0]
( résoudre ) ou arguments[1]
( rejeter ).