Les promesses JavaScript sont un élément essentiel du développement Web moderne. Ils nous permettent de gérer les opérations asynchrones de manière propre et efficace. Cependant, les promesses peuvent souvent se comporter de manière surprenante, notamment lorsqu’elles sont combinées à des boucles d’événements et à des microtâches. Cet article est la première partie d'une série en deux parties dans laquelle nous abordons des questions délicates de sortie basées sur des promesses pour affiner vos compétences JavaScript.
À la fin de cette série, vous comprendrez mieux comment les promesses interagissent avec la boucle d'événements JavaScript. Passons aux cinq premières questions délicates !
console.log("Start"); const promise1 = new Promise((resolve) => { console.log("Promise started"); resolve("Resolved"); }); promise1.then((result) => { console.log(result); }); console.log("End");
Start Promise started End Resolved
const promise2 = new Promise((resolve) => { resolve("Resolved 1"); }); promise2.then((result) => { console.log(result); return new Promise((resolve) => { resolve("Resolved 2"); }); }).then((result) => { console.log(result); });
Resolved 1 Resolved 2
const promise3 = Promise.resolve(); promise3 .then(() => { console.log("Then 1"); }) .then(() => { console.log("Then 2"); }) .then(() => { console.log("Then 3"); });
Then 1 Then 2 Then 3
const promise4 = new Promise((_, reject) => { reject("Error occurred"); }); promise4 .then(() => { console.log("This will not run"); }) .catch((error) => { console.log("Caught:", error); }) .then(() => { console.log("This will still run"); });
Caught: Error occurred This will still run
async function asyncFunc() { console.log("Async function started"); return "Async result"; } asyncFunc().then((result) => { console.log(result); }); console.log("Synchronous log");
Async function started Synchronous log Async result
Dans cette première partie, nous avons couvert les bases des promesses JavaScript et exploré le fonctionnement de la résolution, du chaînage et de la gestion des rejets des promesses. Comprendre la boucle d'événements et la file d'attente des microtâches est crucial pour maîtriser les promesses, et ces questions le soulignent. Restez à l'écoute pour la partie 2, où nous plongerons dans des comportements de promesse plus avancés, notamment Promise.race, Promise.all, et plus encore !
Principaux points à retenir :
Restez à l'écoute pour la Partie 2 de cette série, où nous abordons des astuces de promesses plus avancées !
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!