Maison >interface Web >js tutoriel >Comment suspendre gracieusement l'exécution jusqu'à la fin d'une fonction asynchrone ?
Lorsque vous travaillez avec plusieurs fonctions asynchrones, il est souvent nécessaire d'attendre la fin d'une fonction avant d'en exécuter une autre. Examinons une solution et explorons des approches plus élégantes.
La solution fournie utilise un mécanisme d'interrogation avec setTimeout pour vérifier en permanence si la première fonction est terminée :
<code class="javascript">var isPaused = false; function firstFunction() { isPaused = true; // Do something isPaused = false; } function secondFunction() { firstFunction(); function waitForIt() { if (isPaused) { setTimeout(waitForIt, 100); } else { // Do something else } } }</code>
Bien que cette méthode puisse fonctionner, elle n'est pas optimale en raison de sa dépendance aux sondages.
Fonctions de rappel :
Une pratique courante consiste à utiliser des fonctions de rappel pour gérer l'achèvement asynchrone :
<code class="javascript">function firstFunction(callback) { // Do asynchronous work callback(); } function secondFunction() { firstFunction(() => { console.log("huzzah, I'm done!"); }); }</code>
Lorsque firstFunction se termine, il appelle la fonction de rappel, permettant à secondFunction de continuer à s'exécuter.
Fonctions fléchées :
L'utilisation des fonctions fléchées simplifie cette approche :
<code class="javascript">firstFunction(() => console.log('huzzah, I'm done!'))</code>
Async/Await :
Dans le JavaScript moderne, async/await offre un format plus lisible et moyen efficace de suspendre l'exécution :
<code class="javascript">const secondFunction = async () => { const result = await firstFunction() // Do something else here after firstFunction completes }</code>
Bien que l'interrogation puisse être utilisée pour attendre l'achèvement d'une fonction, les fonctions de rappel, les fonctions fléchées et async/await fournissent des solutions plus élégantes et plus performantes. Choisissez l'approche qui correspond le mieux à vos besoins spécifiques et à votre environnement JavaScript.
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!