Vous pouvez modifier la fonction aa()
ci-dessous, dans le but d'utiliser console.log()
pour afficher want-value
function aa() { setTimeout(function() { return "want-value"; }, 1000); }
après une seconde. Cependant, il y en a. exigences supplémentaires :
aa()
La fonction peut être modifiée à volonté, mais il ne peut pas y avoir d'instruction console.log()
Executeconsole.log()
et il ne peut pas y avoir de setTimeout
package
Peut-être que c'est une question d'entretien, peu importe. L'objectif principal de la question est d'examiner le traitement des résultats de l'exécution d'un appel asynchrone. Puisqu'il s'agit d'un appel asynchrone, il est impossible pour d'attendre le résultat asynchrone. Le résultat <🎜. >
est souvent utilisé pour simuler des opérations asynchrones. Au début, les résultats du traitement des gestionnaires de notifications (appels) asynchrones étaient effectués via des rappels setTimeout()
function aa(callback) { setTimeout(function() { if (typeof callback === "function") { callback("want-value"); } }, 1000); } aa(function(v) { console.log(v); });
function aa() { return new Promise(resolve => { setTimeout(function() { resolve("want-value"); }, 1000); }); } aa().then(v => console.log(v));
function aa() { return new Promise(resolve => { setTimeout(function() { resolve("want-value"); }, 1000); }); } async function main() { const v = await aa(); console.log(v); } main();
est la même que la définition de la méthode Promise, mais dans l'appel Lors de l'utilisation de aa()
, attendez de manière asynchrone Après avoir attendu le résultat asynchrone, utilisez await
pour le traiter. console.log()
ne peut être utilisé que dans la méthode await
, donc pour utiliser async
, vous devez définir une méthode principale de await
et l'appeler dans le portée mondiale. Puisque la méthode principale est asynchrone (déclarée comme asynchrone), s'il y a d'autres instructions après l'appel async
, telles que main()
, alors cette phrase sera exécutée en premier. console.log("hello")
puis appeler main()
peut être encapsulé avec IIFE, main()
(async () => { const v = await aa(); console.log(v); })();
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!