Promesses enchaînées et valeur non définie
Dans ce cas, le .then() enchaîné ne renvoie aucune valeur ni ne crée un nouveau Promesse. Lorsque la promesse externe créée dans doStuff() est résolue avec la valeur n * 10, le .then() suivant est invoqué et le résultat de l'expression qu'il contient (instructions de journalisation et instruction return potentielle) est enregistré dans la console. Cependant, comme aucune valeur réelle n'est renvoyée par ce .then() chaîné, le .then() suivant qui lui est chaîné dans doStuff ne reçoit rien, d'où la valeur non définie.
Solution : renvoyer des valeurs ou des promesses. from .then()
Pour résoudre ce problème, assurez-vous que le rappel .then() renvoie une valeur ou un autre appel de fonction qui renvoie une valeur ou une promesse. Dans cet exemple modifié :
<code class="js">const doStuff = (n /* `n` is expected to be a positive number */) => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(n * 10); }, Math.floor(Math.random() * 1000)); }) .then((result) => { if (result > 100) { console.log(`${result} is greater than 100`); } else { console.log(`${result} is not greater than 100`); } // Return `result` to pass it to the next `.then()` return result; }); }; doStuff(9) .then((data) => { console.log("data is: " + data); });</code>
Maintenant, le .then() chaîné reçoit la valeur renvoyée par le .then() précédent, éliminant ainsi le problème non défini. La sortie affichera la valeur transmise du précédent .then().
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!