Promesse de retour de fonction asynchrone {
Comme le démontre le code fourni, les fonctions asynchrones renvoient souvent une promesse, qui représente la valeur finalement disponible. Cependant, lorsque vous tentez d'accéder immédiatement à sa valeur, la console enregistre "Promise {
Résolution des valeurs de promesse
Pour obtenir la valeur de token souhaitée, vous devez enchaîner un gestionnaire ".then" à votre promesse. Ce gestionnaire capture le résultat résolu, qu'il soit déjà disponible ou toujours en attente :
let AuthUser = (data) => { return google.login(data.username, data.password).then((token) => { return token; }); }; let userToken = AuthUser(data); userToken.then((result) => { console.log(result); // "Some User Token" });
Détails de la résolution de la promesse
Les promesses adhèrent à la spécification Promises/A, qui impose une procédure de résolution spécifique :
Comprendre le chaînage de promesses
La valeur résolue de chaque gestionnaire ".then" devient l'entrée du gestionnaire suivant, permettant une chaîne d'opérations asynchrones. Les exemples suivants illustrent ce comportement :
Retour de valeur :
function initPromise() { return new Promise((res, rej) => { res("initResolve"); }); } initPromise() .then((result) => { console.log(result); // "initResolve" return "normalReturn"; }) .then((result) => { console.log(result); // "normalReturn" });
Retour de promesse chaînée :
function initPromise() { return new Promise((res, rej) => { res("initResolve"); }); } initPromise() .then((result) => { console.log(result); // "initResolve" return new Promise((resolve, reject) => { setTimeout(() => { resolve("secondPromise"); }, 1000); }); }) .then((result) => { console.log(result); // "secondPromise" });
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!