Maison >interface Web >js tutoriel >Pourquoi la chaîne de promesses sans renvoyer de valeur entraîne-t-elle des valeurs non définies ?
Comprendre la valeur non définie dans les promesses chaînées
En JavaScript, les promesses sont utilisées pour les opérations asynchrones. Ils fournissent un moyen de gérer les résultats des calculs et de gérer des scénarios tels que le succès et l'échec. Cependant, nous rencontrons parfois une valeur inattendue de indéfini lors du chaînage des promesses.
Cause fondamentale : chaînage sans valeur renvoyée
Les promesses sont chaînées à l'aide de la méthode .then(). Lorsqu'une promesse est résolue ou rejetée, la méthode .then() renvoie un nouvel objet Promise. Cependant, si aucune valeur ou promesse n'est explicitement renvoyée par la méthode .then(), le nouvel objet Promise sera résolu avec une valeur par défaut non définie.
Exemple :
<code class="javascript">doStuff(9) .then(function(result) { // No value or Promise returned if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } }) .then(function(data) { console.log(data); // Output: undefined });</code>
Dans cet exemple, la première méthode .then() ne renvoie aucune valeur. En conséquence, la deuxième méthode .then() reçoit undefined comme argument, qui est ensuite imprimé sur la console.
Solution : renvoyer une valeur ou une promesse
Pour éviter les valeurs non définies dans les promesses chaînées, une valeur ou une promesse qui renvoie une valeur doit être explicitement renvoyée par la méthode .then().
Exemple :
<code class="javascript">doStuff(9) .then(function(result) { if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } // Return the result to avoid undefined at the next .then() return result; }) .then(function(data) { console.log("data is: " + data); // Output: "data is: 90" });</code>
En renvoyant le résultat, la deuxième méthode .then() reçoit la valeur réelle du résultat au lieu de non définie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!